1. 20 9月, 2015 3 次提交
    • J
      UI: Default to colorspace 601 instead of 709 · 6d9bb63f
      jp9000 提交于
      Seems that most decoders that don't read the h264 header tend to expect
      601 instead of 709.
      6d9bb63f
    • J
      win-capture: Always have some capture FPS limit · ec5059ce
      jp9000 提交于
      For game capture, if a game is running at for example 800 FPS and limit
      capture framerate is off, it would try to capture all 800 of those
      frames, dramatically reducing performance more than what would ever be
      necessary.
      
      When limit capture framerate is off, instead of capturing all frames,
      capture frames at an interval of twice the OBS FPS, identical to how
      OBS1 works by default.  This should greatly increase performance under
      that circumstance.
      ec5059ce
    • J
      obs-x264: Adjust log message · ddcf2436
      jp9000 提交于
      Use the actual parameter from the x264 params for CRF, and also make
      sure to specify that CRF is meant to be 0 if CBR is enabled.
      ddcf2436
  2. 19 9月, 2015 7 次提交
  3. 18 9月, 2015 5 次提交
    • J
      win-mf: Clean up encoder logging · e077880a
      jp9000 提交于
      e077880a
    • J
      win-mf: Do not register encoder if it can't create · 8280dbc5
      jp9000 提交于
      It seems that certain encoders (quicksync) do not have proper back-end
      support in the windows media foundation libraries for certain CPUs.
      Quicksync doesn't appear to support CPUs that are not haswell (4xxx) or
      above.  It's really annoying, but there's not much we can do about it
      until we implement our own custom quicksync implementation.
      
      This check simply makes it attempt to spawn an encoder to check to see
      whether the encoder can actually be created before registering an
      encoder.
      8280dbc5
    • J
      libobs: Shut down encoder if valid but not active · fb32b85f
      jp9000 提交于
      It's not impossible that this sort of thing could happen, although
      unlikely.
      fb32b85f
    • J
      obs-outputs: Stop output after joining send thread · c107181b
      jp9000 提交于
      The encoders were stopping before processing was completed, which could
      cause the output to access data that's potentially invalidated.
      c107181b
    • J
      win-mf: Fix more issues on encoder shutdown · 88996aef
      jp9000 提交于
      The previous commit (672378d2) was supposed to fix issues with the
      encoder releasing while data was still being processed, but did not
      account for when the encoder has never started up.  That was my fault.
      
      Furthermore, the way in which it was waiting to drain events was
      incorrect.  The encoder may still be active even though there aren't any
      events queued.  The proper way to wait for an async encoder to finish up
      is to process output samples until it requests more input samples.
      88996aef
  4. 17 9月, 2015 7 次提交
    • J
      win-mf: Drain events before releasing encoder · 672378d2
      jp9000 提交于
      After I made it so that the encoder internal data gets destroyed when
      all outputs stop using it (fa7286f8), the media foundation h264 encoder
      started having crashes on shutdown.  After a lot of testing, I realized
      that the reason it started happening is almost assuredly because active
      encoding events had not yet been completed.
      
      After making it wait on those events by calling DrainEvents(true), the
      crashes stopped.  So asynchronous actions were clearly still occurring
      and it was shutting down while data was still being processed, thus
      leading to a crash.
      672378d2
    • J
      Merge pull request #476 from bssteph/master · 7788ccdd
      Jim 提交于
      Clean up Intensity Pro 4K commit a bit
      7788ccdd
    • K
      mac-vth264: Add Apple H264 encoder · 595f451e
      kc5nra 提交于
      Adds a VideoToolbox based H264 encoder for OSX, which most notably
      allows the use of hardware encoding (Quicksync).
      
      NOTES:
      - Hardware encoding is handled by Apple itself internally.  The plugin
        itself has little control over many details due to the way that Apple
        designed the VideoToolbox interface.  Generally however, quicksync is
        used if available on the CPU, and quicksync is almost always available
        due to the fact that macs are exclusively Intel.
      
      - The VideoToolbox does not seem to implement CBR, so it won't be
        available.  These encoders are generally not recommended for
        streaming.
      595f451e
    • J
      win-mf: Add media foundation h264 encoder · afa2985f
      jp9000 提交于
      Implements hardware encoders through the Media Foundation interface
      provided by Microsoft.
      
      Supports:
      - Quicksync (Intel)
      - VCE (AMD)
      - NVENC (NVIDIA, might only be supported through MF on Windows 10)
      
      Notes:
      - NVENC and VCE do not appear to have proper CBR implementations.  This
        isn't a fault of our code, but the Media Foundation libraries.
        Quicksync however appears to be fine.
      afa2985f
    • J
      (API Change) libobs: Pass type data to get_name callbacks · 6285a477
      jp9000 提交于
      API changed from:
      obs_source_info::get_name(void)
      obs_output_info::get_name(void)
      obs_encoder_info::get_name(void)
      obs_service_info::get_name(void)
      
      API changed to:
      obs_source_info::get_name(void *type_data)
      obs_output_info::get_name(void *type_data)
      obs_encoder_info::get_name(void *type_data)
      obs_service_info::get_name(void *type_data)
      
      This allows the type data to be used when getting the name of the
      object (useful for plugin wrappers primarily).
      
      NOTE: Though a parameter was added, this is backward-compatible with
      older plugins due to calling convention.  The new parameter will simply
      be ignored by older plugins, and the stack (if used) will be cleaned up
      by the caller.
      6285a477
    • J
      libobs: Add functions to get private type data · 0ed913a1
      jp9000 提交于
      The private type data is the type_data variable that's provided when
      object types are registered by plugins.
      0ed913a1
    • J
      libobs: Add private data to definition structures · 7920668e
      jp9000 提交于
      This is useful for allowing the ability to have private data associated
      with the object type definition structures.  This private data can be
      useful for things like plugin wrappers for other languages, or providing
      dynamically generated object types.
      7920668e
  5. 16 9月, 2015 5 次提交
  6. 15 9月, 2015 2 次提交
  7. 14 9月, 2015 4 次提交
    • J
      libobs: Shut down encoder when not in use · fa7286f8
      jp9000 提交于
      This prevents encoders (hardware encoders in particular) from being
      continually active when all outputs disconnect from an encoder.  This is
      mostly just a temporary measure; the encoding interface may need a bit
      of a redesign.  It will also definitely needs to be able to flush at
      some point.  Currently when an output is stopped, the pending data is
      discarded, which needs to be fixed.
      fa7286f8
    • J
      libobs: Allow object creation if id not found · af310fb5
      jp9000 提交于
      Allows objects to be created regardless of whether the actual id exists
      or not.  This is a precaution that preserves objects/settings if for
      some reason the id was removed for whatever reason (plugin removed, or
      hardware encoder that disappeared).  This was already added for sources,
      but really needs to be added for other libobs objects as well: outputs,
      encoders, services.
      af310fb5
    • J
      libobs: Remove potential NULL pointer dereference · a746c8cd
      jp9000 提交于
      a746c8cd
    • J
      libobs: Fix cmake bug (make sure variable exists) · df14671d
      jp9000 提交于
      If the FFMPEG_AVCODEC_LIBRARIES variable does not exist, it will
      generate a cmake error, so check to make sure the variable exists before
      executing this code.
      df14671d
  8. 13 9月, 2015 4 次提交
    • M
      obs-ffmpeg: Fix compile error · b266b563
      Mathias Panzenböck 提交于
      This fixes the compile error: "'AVDISCARD_NONINTRA' undeclared" when
      using a libavcodec version earlier than 55.67.100.
      
      Closes jp9000/obs-studio#469
      b266b563
    • J
      UI: Inhibit sleep/screensavers while active · 27484186
      jp9000 提交于
      27484186
    • J
      libobs/util: Add functions to inhibit sleep · d78d0072
      jp9000 提交于
      These fucntions prevent the computer from going to sleep, hibernating,
      or starting up a screen saver.
      
      On linux, it will also attempt to use DBus to prevent gnome/kde/etc
      sleep, but it's not necessarily required in order to compile the
      library.  Otherwise, it will simply call "xdg-screensaver reset" once
      every 30 seconds to reset the screensaver timer.
      d78d0072
    • J
      cmake: Add helper to find dbus package · 88ab2587
      jp9000 提交于
      The DBus library is a message bus system used to make applications
      communicate with each other.  The primary reason for adding it is to
      access certain service features to prevent computer sleep/hibernate/etc.
      
      This will also create a HAVE_DBUS variable (set to 1 or 0 if found or
      not found)
      88ab2587
  9. 12 9月, 2015 3 次提交
    • J
      cmake: Remove libobs-d3d9 · a60189d4
      jp9000 提交于
      a60189d4
    • J
      UI: Use empty scene for new scene collection · 01e7a3c6
      jp9000 提交于
      The user may not want their audio or their display to be captured when
      creating a new scene collection.  Make new scene collections default to
      fully empty.
      01e7a3c6
    • J
      UI: Always create a display capture on first run · 35b2ce56
      jp9000 提交于
      For the sake of consistency, always create a display capture source on
      the very first run of the program, just to have something displayed.
      
      (NOTE: The only exception here is on windows 7/vista, which isn't ideal
      for display capture, so it'll continue to be left blank)
      35b2ce56