1. 05 10月, 2015 3 次提交
    • J
      libobs/util: Call SymInitialize before other Sym* · af119843
      jp9000 提交于
      On the first call to update the symbol paths, pass the path string to
      the SymInitializeW function first if it hasn't been called yet.  If it
      has been called, then defer to SymSetSearchPathW and then
      SymRefreshModuleList.  This is meant to reduce a needless extra call to
      the latter two functions on the first use of the function.
      af119843
    • J
      win-wasapi: Remove resolved TODO comment · 28947e96
      jp9000 提交于
      28947e96
    • J
      win-wasapi: Use system timestamps by default for input · 18542461
      jp9000 提交于
      Microphones and other input devices can often have bad or erroneous
      timestamps.  Although we handle bad timestamps much better in
      obs-studio, there are still lingering issues that can crop up from time
      to time with device QPC timestamps that leads to mic data not playing
      back properly.  It's best if it be off by default rather than on, which
      will now cause it to use system timestamps for input devices by default.
      This changes it to the same handling as OBS1 for this case.
      18542461
  2. 29 9月, 2015 2 次提交
  3. 24 9月, 2015 1 次提交
    • P
      UI: Fix removing wrong scene from list · 80b20abd
      Palana 提交于
      RemoveScene would always remove the currently selected item from the
      scenes list, even if that item didn't reference the actual scene being
      removed; finding the proper item via its OBSRef fixes this issue.
      
      How to reproduce the original issue:
      Create two scenes "a" and "b", set a hotkey for switching to scene "a",
      select scene "b" and press the remove scene button, then while the
      confirmation dialog is up press the hotkey while the UI is out of focus.
      The active scene should have switched to "a", while the dialog still
      displays "b" as its target; now confirm the removal of "b". Note how "a"
      was removed from the scenes list instead.
      
      Reported at https://obsproject.com/mantis/view.php?id=333
      80b20abd
  4. 23 9月, 2015 9 次提交
  5. 22 9月, 2015 7 次提交
  6. 21 9月, 2015 3 次提交
    • J
      UI: Use better default UI icons · 718035ef
      jp9000 提交于
      718035ef
    • J
      libobs/util: Use gzopen* instead of gzdopen · 0a228d07
      jp9000 提交于
      Using gzdopen will not work properly if the C standard library used to
      get the descriptor is not the same library as the one that was compiled
      with zlib.  When this is the case, it causes zlib to fail to write a
      file, and would report a C standard library error.  Use gzopen and
      gzopen_w instead to ensure that the file is opened and closed by zlib
      itself, ensuring that zlib and the libobs do not have to share the C
      standard library between each other.
      0a228d07
    • J
      cmake: Copy ogg and vorbis libs with avcodec · b9d6c649
      jp9000 提交于
      b9d6c649
  7. 20 9月, 2015 6 次提交
    • J
      UI: Use utvideo for lossless compression · 5d8f0731
      jp9000 提交于
      After some more testing, utvideo not only gives better encoding
      performance, but also better compression and better decoding
      performance.  It's pretty much superior all around over huffyuv.
      5d8f0731
    • J
      UI: Add recording presets to simple output · 54a3e669
      jp9000 提交于
      So certain high-profile individuals were complaining that it was
      difficult to configure recording settings for quality in OBS.  So, I
      decided to add a very easy-to-use auto-configuration for high quality
      encoding -- including lossless encoding.  This feature will
      automatically configure ideal recording settings based upon a specified
      quality level.
      
      Recording quality presets added to simple output:
      
      - Same as stream: Copies the encoded streaming data with no extra usage
        hit.
      
      - High quality: uses a higher CRF value (starting at 23) if using x264.
      
      - Indistinguishable quality: uses a low CRF value (starting at 16) if
        using x264.
      
      - Lossless will spawn an FFmpeg output that uses huffyuv encoding.  If a
        user tries to select lossless, they will be warned both via a dialog
        prompt and a warning message in the settings window to ensure they
        understand that it requires tremendous amounts of free space.  It will
        always use the AVI file format.
      
      Extra Notes:
      
      - When High/Indistinguishable quality is set, it will allow you to
        select the recording encoder.  Currently, it just allows you to select
        x264 (at either veryfast or ultrafast).  Later on, it'll be useful to
        be able to set up pre-configured presets for hardware encoders once
        more are implemented and tested.
      
      - I decided to allow the use of x264 at both veryfast or ultrafast
        presets.  The reasoning is two-fold:
      
        1.) ultrafast is perfectly viable even for near indistinguishable
      quality as long as it has the appropriate CRF value.  It's nice if you
      want to record but would like to or need to reduce the impact of
      encoding on the CPU.  It will automatically compensate for the preset at
      the cost of larger file size.
      
        2.) It was suggested to just always use ultrafast, but ultrafast
      requires 2-4x as much disk space for the same CRF (most likely due to
      x264 compensating for the preset).  Providing veryfast is important if
      you really want to reduce file size and/or reduce blocking at lower
      quality levels.
      
      - When a recording preset is used, a secondary audio encoder is also
        spawned at 192 bitrate to ensure high quality audio.  I chose 192
        because that's the limit of the media foundation aac encoder on
        windows, which I want to make sure is used if available due to its
        high performance.
      
      - The CRF calculation is based upon resolution, quality, and whether
        it's set to ultrafast.  First, quality sets the base CRF, 23 for
        "good" quality, 16 for "very high" quality.  If set to ultrafast,
        it'll subtract 2 points from the CRF value to help compensate.  Lower
        resolutions will also lower the CRF value to help improve higher
        details with a smaller pixel ratio.
      54a3e669
    • J
      UI: Clarify base/scaled resolution text · 27d28606
      jp9000 提交于
      27d28606
    • 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
  8. 19 9月, 2015 7 次提交
  9. 18 9月, 2015 2 次提交
    • 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