1. 14 2月, 2016 1 次提交
  2. 10 2月, 2016 2 次提交
    • J
      UI: Use uncompressed audio for lossless · 560b69ec
      jp9000 提交于
      Originally there was an issue using FLAC for audio in AVI files, AVI
      files wouldn't play back with some players.  Because FLAC doesn't work,
      and lossless should be lossless, instead just used uncompressed WAV
      data for the lossless audio, which is always supported.
      560b69ec
    • J
      Revert "UI: Use flac for lossless audio" · d66759d6
      jp9000 提交于
      This reverts commit 6e203109.
      
      FLAC doesn't work properly in AVI files, and MKV files don't work in
      vegas.  So, sadly the only solution is to use lossless audio at a super
      high bitrate for the time being.
      d66759d6
  3. 08 2月, 2016 4 次提交
  4. 05 2月, 2016 8 次提交
  5. 04 2月, 2016 4 次提交
    • J
      libobs: Fix bug where source audio could stop outputting · fa8ae473
      jp9000 提交于
      If obs_source::audio_ts is set to 0 (such as by discard_if_stopped in
      obs-audio.c), but the push_back variable in the source_output_audio_data
      function in obs-source.c was being set to true (meaning it's within the
      seamless audio smoothing threshold), it would cause it to never reset
      the obs_source::audio_ts value, and thus all audio data from the source
      would become perpetually ignored by the audio subsystem until there was
      finally some sort of timestamp jump that caused it to call
      source_output_audio_place, and thus reset obs_source::audio_ts.
      
      obs_source::audio_ts is only reset in source_output_audio_place, not in
      source_output_audio_push_back, so the most simple solution is to just
      call source_output_audio_push_back is obs_source::audio_ts is 0.
      fa8ae473
    • J
      libobs: Don't call discard_if_stopped if not minor data · ac3b2a08
      jp9000 提交于
      Only allow discard_if_stopped to be called if the audio data is marked
      as pending, and the pending audio data is below the audio tick threshold
      size.
      ac3b2a08
    • J
      libobs: Remove unnecessary audio reset code · cded9cb1
      jp9000 提交于
      This code causes audio data in general to be reset (and subsequently
      deleted).  It should just be marked as pending and ignored until the
      data is ready.  The discard_if_stopped function will serve the same
      purpose if the source's audio has actually stopped.
      cded9cb1
    • J
      libobs: Don't clear audio on ts jump (seamless loops) · b86fdae4
      jp9000 提交于
      There's technically no need to clear the audio data here, nor is there
      any need to try to trick the timestamp in to a different position.  It
      can simple just reset the audio timing.
      
      Prevents a possible case where audio data might be deleted when it's not
      necessary to delete any.
      b86fdae4
  6. 01 2月, 2016 5 次提交
  7. 31 1月, 2016 15 次提交
    • J
      UI: Ensure the output res. is modified along with base · 6407707a
      jp9000 提交于
      6407707a
    • J
      UI: Resize program view if resolution settings changed · 3ca327fd
      jp9000 提交于
      3ca327fd
    • J
      libobs: Fix potential crash when transitioning · e93aeaef
      jp9000 提交于
      Sometimes the A and B sources of a transition would a large difference
      in their timestamps, and the calculation of where to start the audio
      data for one of the sources could be above the tick size, which could
      cause a crash.
      e93aeaef
    • J
      libobs: Discard remainder audio if source audio stopped · 4b158802
      jp9000 提交于
      If the circular audio buffer of the source has data remaining that's
      less than the audio frame tick count (1024 frames), it would just leave
      that audio data on the source without discarding it.  However, this
      could cause audio buffering to increase unnecessarily under certain
      circumstances (when the next audio timestamp is within the timestamp
      jump window), so it would append data to that circular buffer despite
      the audio stopping that long ago, causing audio buffering to have to
      increase to compensate.
      
      Instead, just discard pending audio if it hasn't been written to.  In
      other words, if the audio has stopped and there's insufficient audio
      left to continue processing.
      4b158802
    • 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
    • J
      libobs: Try to pair video with one multi-track encoders · a7067906
      jp9000 提交于
      When starting a multi-track output, attempt to pair the video encoder
      with one of the audio encoders to ensure that the video and audio
      encoders start as close together in time as possible.  This ensures the
      best possible audio/video syncing point when using multi-track audio
      output.
      a7067906
    • J
      libobs: Start audio tracks before starting video tracks · b0d88f7c
      jp9000 提交于
      When using multi-track audio, encoders cannot be paired like they can
      when only using a single audio track with video, so it has to choose the
      best point in the interleaved buffer as the "starting point", and if the
      encoders start up at different times, it has to prune that data and wait
      to start the output on the next video keyframe.  When the audio encoders
      started up, there was the case where the encoders would take some time
      to load, and it would cause the pruning code to wait for the next
      keyframe to ensure startup syncing.
      
      Starting the audio encoders before starting the video encoder should
      reduce the possibility of that happening in a multi-track scenario.
      b0d88f7c
    • J
      libobs: Consider multi-track audio when pruning packets · be717dbb
      jp9000 提交于
      In a multi-track scenario it was not taking in to consideration the
      possibility of secondary audio tracks, which could have caused desync on
      some of the audio tracks.
      be717dbb
    • J
      libobs: Add find_first_packet_type_idx · ec7faee3
      jp9000 提交于
      Gets the index of the first interleaved packet of a given/type and audio
      index
      ec7faee3
    • J
      UI: Fix a wrong label alignment in settings window · 48a3230b
      jp9000 提交于
      48a3230b
    • J
      libobs: Fix variable being access outside of a mutex · 971728a1
      jp9000 提交于
      audio_input_buf should never be accessed outside of audio_buf_mutex.
      971728a1
    • J
      libobs: Remove seamless audio loop handling · d43d59ca
      jp9000 提交于
      The seamless audio looping code would erroneously trigger for things
      that weren't loops, causing the audio data to continually push back and
      ignore timestamps, thus going out of sync.
      
      There does need to be loop handling code, but due to the fact that other
      things may need to trigger this code, it's best just to clear the audio
      data and start from a fresh sync point.  Unfortunately for the case of
      loops, this means the window in which audio data loops and video frames
      loop need to be muted.
      d43d59ca
    • J
      libobs: Always return audio as pending if not an audio source · eae1328a
      jp9000 提交于
      This is an additional method/helper that prevents composite sources from
      treating non-audio sources as audio sources.
      eae1328a
    • J
      libobs: Always render active audio sources when possible · 3988c6d4
      jp9000 提交于
      Fixes an issue where audio data would not be popped if they were not
      activated/presenting.  This would cause the audio subsystem to
      needlessly buffer when they were reactivated again.  Rendering all audio
      sources (excuding composite/filter sources) helps ensure that audio data
      is always popped and not left to pile up.
      3988c6d4
    • J
      UI: Fix Delete shortcut for scenes/sources listboxes · 9e173283
      jp9000 提交于
      When the new UI was put in, the action shortcuts were unintentionally
      removed from the list boxes.
      9e173283
  8. 30 1月, 2016 1 次提交