1. 21 1月, 2020 1 次提交
  2. 31 8月, 2019 2 次提交
    • J
      libobs: Make sure to offset unpause audio data · 1a72b049
      jp9000 提交于
      When an unpause occurs, it takes an audio segment and splits it at the
      exact point corresponding to the pause timestamp, and then it's supposed
      to only send the ending part of the split.  However, the audio pointers
      were not being incremented, therefore it was sending the front of the
      audio segment to instead of the back of the audio segment by mistake.
      1a72b049
    • J
      libobs: Fix pause cutting out video data prematurely · 03e008fd
      jp9000 提交于
      When pause has been activated, the video_pause_check() function is used
      when receiving raw frames in order to filter out frames that are in the
      pause window, that way they aren't sent to the encoder or output.
      
      However, when pause was enabled, it was unintentionally filtering out
      some frames before the specified starting timestamp as well, causing
      extra video data to get cut out prematurely.  This fixes that issue.
      03e008fd
  3. 15 8月, 2019 1 次提交
  4. 25 7月, 2019 1 次提交
  5. 14 7月, 2019 1 次提交
  6. 13 7月, 2019 1 次提交
    • M
      libobs: Call both get_defaults and get_defaults2 · 3f6bbe2d
      Michael Fabian 'Xaymar' Dirks 提交于
      Unlike get_properties, there is not reason to not call get_defaults if it is
      given in addition to get_defaults2. Additonally this fixes the bug with
      'init_encoder' which would only ever call get_defaults, resulting in broken
      encoders if those used get_defaults2.
      3f6bbe2d
  7. 08 7月, 2019 1 次提交
    • J
      libobs: Implement pausing of outputs · 153fa633
      jp9000 提交于
      This implements pausing of outputs.  To accomplish this, raw audio/video
      data is halted to the encoders or raw output.  Pausing is as precisely
      timed as possible according to the timing of the obs_output_pause call,
      and audio data will be spliced down to the exact audio sample in
      accordance to that timing at the start/end marks.
      
      Outputs that support this (outputs used for recording) can set the
      OBS_OUTPUT_CAN_PAUSE capability flag.
      153fa633
  8. 24 6月, 2019 1 次提交
    • J
      clang-format: Apply formatting · f53df7da
      jp9000 提交于
      Code submissions have continually suffered from formatting
      inconsistencies that constantly have to be addressed.  Using
      clang-format simplifies this by making code formatting more consistent,
      and allows automation of the code formatting so that maintainers can
      focus more on the code itself instead of code formatting.
      f53df7da
  9. 17 5月, 2019 1 次提交
    • J
      libobs: Fix lockup when an encode call fails · 973d31b8
      jp9000 提交于
      (This commit also modifies the UI, obs-ffmpeg, and obs-output modules)
      
      Fixes a long-time regression where the program would lock up if an
      encode call fails.  Shuts down all outputs associated with the failing
      encoder and displays an error message to the user.
      
      Ideally, it would be best if a more detailed error could be displayed to
      the user about the nature of the error, though the primary problem is
      the encoder errors are typically not something the user would be able to
      understand.  The current message is a bit of a generic error message;
      improvement is welcome.
      
      Another suggestion is to try to have the encoder restart seamlessly,
      though it would take a significant amount of work to be able to make it
      do something like that properly, and it sort of assumes that encoder
      failures are sporadic, which may not necessarily be the case with some
      hardware encoders on some systems.  It may be better just to use another
      encoder in that case.  For now, seamless restart is ruled out.
      973d31b8
  10. 27 2月, 2019 1 次提交
  11. 13 2月, 2019 1 次提交
    • J
      libobs: Fix potential race condition on shutdown · 131fb7b4
      jp9000 提交于
      If the remove_connection call of obs_encoder_stop_internal took too
      long, obs_encoder_destroy could get called before that function
      completed, causing a race condition.
      131fb7b4
  12. 08 2月, 2019 3 次提交
    • J
      libobs: Add texture-based encoding support · 93ba6e71
      jp9000 提交于
      Allows the ability to encode by passing NV12 textures.  This uses a
      separate thread for texture-based encoders with a small queue of
      textures.  An output texture with a keyed mutex shared texture is locked
      between OBS and each encoder.  A new encoder callback and capability
      flag is used to encode with textures.
      93ba6e71
    • J
      libobs: Split do_encode in to two funcs · cd1607ca
      jp9000 提交于
      This splits the "do_encode" function in to "do_encode" and
      "send_off_encoder_packet", the latter of which allows the ability for
      texture-based encoders to manage their own encoding and just simply send
      off a packet to the outputs.
      cd1607ca
    • J
      libobs: Add ability to reroute encoders · 9b8bc22f
      jp9000 提交于
      Allows the ability for one encoder to defer to another in case of
      failure or unsupported feature.  Okay, fine, it's mostly a hack so the
      new NVENC encoder can fall back to the FFmpeg encoder if NV12 textures
      aren't in use, that way it does not have to implement raw fallback
      support itself.  The settings and properties are pretty much the same,
      so there's no reason not to utilize it in order to save time that could
      otherwise be spent more productively.
      9b8bc22f
  13. 05 1月, 2019 1 次提交
  14. 20 7月, 2018 1 次提交
  15. 23 4月, 2018 1 次提交
  16. 27 11月, 2017 1 次提交
  17. 02 10月, 2017 1 次提交
  18. 08 12月, 2016 1 次提交
    • J
      libobs: Use reference counting for encoder packets · 7d6e6eee
      jp9000 提交于
      Prevents reallocation of encoded packet data.
      
      Deprecates:
      obs_duplicate_encoder_packet
      obs_free_encoder_packet
      
      Replaces those functions with:
      obs_encoder_packet_ref
      obs_encoder_packet_release
      7d6e6eee
  19. 24 10月, 2016 1 次提交
  20. 06 8月, 2016 1 次提交
    • J
      libobs: Reduce unnecessary logging (info -> debug) · 526d390a
      jp9000 提交于
      (Note: This commit also modifies coreaudio-encoder, win-capture, and
      win-mf modules)
      
      This reduces logging to the user's log file.  Most of the things
      specified are not useful for examining log files, and make reading log
      files more painful.
      
      The things that are useful to log should be up to the front-end to
      implement.  The core and core plugins should have minimal mandatory
      logging.
      526d390a
  21. 20 6月, 2016 1 次提交
  22. 19 4月, 2016 1 次提交
  23. 14 4月, 2016 1 次提交
  24. 27 2月, 2016 1 次提交
  25. 31 1月, 2016 1 次提交
    • J
      libobs: Ensure paired encoders start up at the same time · 9aa18d3d
      jp9000 提交于
      With the new audio subsystem, audio buffering is minimal at all times.
      However, when the audio buffering is too small or non-existent, it would
      cause the audio encoders to start with a timestamp that was actually
      higher than the first video frame timestamp.  Video would have some
      inherent buffering/delay, but then audio could return and encode almost
      immediately.  This created a possible window of empty time between the
      first encoded video packet and the first encoded audio packet, where as
      audio buffering would cause the first audio packet's timestamp to always
      be way before the first video packet's timestamp.  It would then
      incorrectly assume the two starting points were in sync.
      
      So instead of assuming the audio data is always first, this patch makes
      video wait for audio data comes in, and conversely buffers audio data
      until video comes in, and tries to find a starting point within that
      video data instead, ensuring a synced starting point whether audio
      buffering is active or not.
      9aa18d3d
  26. 27 1月, 2016 1 次提交
    • J
      libobs: Allow "private" contexts · bccd3b0b
      jp9000 提交于
      The intention of this is to allow sources/outputs/etc to be created
      without being visible to the UI or save/load functions.
      bccd3b0b
  27. 26 1月, 2016 2 次提交
    • J
      libobs: Subtract packet dts_usec with first packet offset · c4657da2
      jp9000 提交于
      Ensures that the packet dts_usec vals which are generated for
      syncing/interleaving use the proper offset relative to where they're
      supposed to be starting from.  The negative DTS of a first video packet
      could potentially have been applied twice due to this.
      c4657da2
    • J
      libobs: Fix potential race condition · 346ddd50
      jp9000 提交于
      Fixes potential race conditions when two threads are trying to
      initialize/start/stop the same encoders at the same time.
      346ddd50
  28. 21 10月, 2015 2 次提交
  29. 18 9月, 2015 1 次提交
  30. 17 9月, 2015 2 次提交
    • 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
  31. 14 9月, 2015 2 次提交
    • 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
  32. 12 8月, 2015 1 次提交
  33. 10 7月, 2015 1 次提交
    • J
      libobs: Add API to get encoder sample rate · 9f96e691
      jp9000 提交于
      In case the encoder has to use a different sample rate (due to the
      sample rate being unsupported), we need an API function for the encoder
      to get the sample rate that the encoder is actually running at.
      9f96e691