1. 08 2月, 2019 40 次提交
    • J
      obs-ffmpeg: Do not allow new NVENC on gpu idx > 0 · a249d26e
      jp9000 提交于
      Because the new NVENC implementation requires texture sharing, if the
      user chooses to use a secondary GPU, fall back to the old implementation
      instead.
      a249d26e
    • J
      Merge pull request #1502 from DDRBoxman/decklinkoutui · e60023da
      Jim 提交于
      Decklink: Add UI to control output
      e60023da
    • M
      enc-amf: Update plugin to Version 2.5.1 · 656dcf4e
      Michael Fabian 'Xaymar' Dirks 提交于
      Fixes the Profile Level problem with integrated AMD Vega GPUs.
      
      (Jim: Also fixes an issue where the amf-test executable would not build)
      
      Closes obsproject/obs-studio#1619
      656dcf4e
    • J
      UI: Use new NVENC by default in simple output mode · 79613b66
      jp9000 提交于
      If the new texture-based NVENC implementation is available, uses it by
      default when a user is using simple output mode.
      79613b66
    • J
      obs-ffmpeg: Add texture-based NVENC encoder implementation · ed0c7bcd
      jp9000 提交于
      Adds a texture-based NVENC implementation which passes OBS NV12 output
      textures directly to NVENC without downloading them off of the GPU,
      increasing NVENC performance by a significant margin.
      
      If NV12 textures are unavailable or the new encoder fails to initialize
      for whatever reason, it will fall back to the FFmpeg NVENC
      implementation safely.
      ed0c7bcd
    • J
      obs-ffmpeg: Update NVENC properties and property defaults · 8b566f33
      jp9000 提交于
      Adds VBR rate control mode, adds a lookahead option, adds psycho visual
      tuning option, removes level property (now always set to 'auto'),
      removes "2pass" option (replaced by new "Max Quality" preset which uses
      2pass by default), modifies a few defaults, and updates their locale
      text.
      8b566f33
    • J
      obs-ffmpeg: Update display name of FFmpeg NVENC encoder · 9c117726
      jp9000 提交于
      9c117726
    • J
      obs-ffmpeg: Update nvEncodeAPI.h to latest version · c3f3aa7f
      jp9000 提交于
      c3f3aa7f
    • J
      UI: If hardware encoder selected, disable post rescale · f5ad8b5d
      jp9000 提交于
      The post-output rescale option in advanced output mode cannot currently
      be used with texture-based encoders, so disable the option when a
      texture-based encoder is selected.
      f5ad8b5d
    • J
      UI: Use hardware encoding by default if available · 9fee8953
      jp9000 提交于
      If the user doesn't use the auto-configuration on first use, set the
      default encoders used in simple output mode to hardware encoders.
      9fee8953
    • 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/media-io: Add frame funcs for separate GPU thread · 36ffa65b
      jp9000 提交于
      Normally, the total and skipped frame count for the encoder is performed
      in the video-io thread.  However, because a new thread is being
      introduced for texture-based encoding, the frontend has no way of being
      able to query that.  So, instead of making the frontend query that data
      separately, just make the texture encoder thread increment the values of
      video-io.  That way, the frontend doesn't need to change any code, and
      can continue using the same functions for determining the total/skipped
      frame count.
      
      This can cause the frame count to be doubled if both a texture-based
      encoder and a raw data encoder is active at the same time, but it's an
      acceptable alternative.
      36ffa65b
    • J
      obs-ffmpeg: Implement NVENC video card blacklist · 0be02564
      jp9000 提交于
      This implements a blacklist of devices that ship with NVENC libraries,
      but do not support NVENC, which would cause the plugin to mistakenly
      think that NVENC was available when it was not.  If these devices are
      the only NVIDIA devices on the system, consider NVENC unavailable.
      
      This is much more efficient than spawning an encoder on startup to see
      if NVENC is available, which would incur a ~500 millisecond hit on
      startup.  Additionally, also much less crash-prone.
      0be02564
    • J
      libobs/util: Fix bug with get_winver · 8134b8af
      jp9000 提交于
      get_winver is supposed to return a 16bit value in a format equivalent to
      0xMMmm (Major minor).  It was returning 0xMM00mm incorrectly instead.
      8134b8af
    • J
      libobs/util: Fix bug with circlebuf_data · e6c719a1
      jp9000 提交于
      If the index specified is equal to the size of the data, return NULL.
      e6c719a1
    • 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
    • J
      libobs/util: Add get_win_ver_int() func (windows) · 2e1a1945
      jp9000 提交于
      Returns the current version number of windows.  The lowest byte is the
      minor version number, then the next lowest byte is the major version
      number.  E.g. 0x601 for Windows 7, 0x602 for Windows 8, 0x603 for
      Windows 8.1, and 0xA00 for Windows 10.
      2e1a1945
    • J
      libobs: Use NV12 textures when available · 28d0cc8b
      jp9000 提交于
      28d0cc8b
    • J
      libobs: Add obs_video_active() function · 82848d51
      jp9000 提交于
      (This commit also modifies UI)
      
      Adds a universal function for determining whether video output is
      currently active, rather than having to use video_output_active() on the
      value returned by obs_get_video().
      82848d51
    • J
      libobs/graphics: Add NV12 texture support · 93fc61fa
      jp9000 提交于
      93fc61fa
    • J
      libobs/graphics: Add texture sharing functions · b64d7d71
      jp9000 提交于
      b64d7d71
    • J
      UI: Fix potential race condition · 0a202ab7
      jp9000 提交于
      The signal mutex can be locked within other signal mutexes, causing a
      potential hard cross-lock when releasing certain sources.  Instead,
      defer the Disconnect() call to the UI thread.
      
      This fixes a potential freeze on exit.
      0a202ab7
    • J
      UI: Add Twitch integration · a88b4402
      jp9000 提交于
      a88b4402
    • J
      UI: Add Mixer integration · 4710c042
      jp9000 提交于
      4710c042
    • J
      UI: Add auth. support to settings/autoconfig · 67bb8d70
      jp9000 提交于
      Adds the ability to connect/login to an account via the settings and
      auto-configuration dialogs.  Checks registered Auth objects, and if the
      Auth object matches the currently selected service in the settings
      window or auto-configuration dialog, will display "connect account"
      buttons for the user to be able to click (which are optional, they can
      still use stream keys if they'd prefer).
      67bb8d70
    • J
      UI: Add obfuscation func · ccc64df3
      jp9000 提交于
      You could also say..  obs-fuscation.
      ccc64df3
    • J
      UI: Add Auth and OAuth classes · 08fb29a0
      jp9000 提交于
      Allows the ability to authenticate to a specific service.  Typically via
      OAuth.
      08fb29a0
    • J
      UI: Add func to load browser/cookies, but show dialog · 1b8bc55f
      jp9000 提交于
      Adds a function for initializing browser and cookies in a separate
      thread while, and while waiting for it to complete, show a dialog
      stating that the browser is currently being loaded.  Allows the ability
      to safely prevent the user from taking any action without actually
      freezing up the UI thread.
      1b8bc55f
    • J
      UI: Add per-profile browser panel cookie management · fe043f2b
      jp9000 提交于
      Allows the ability to switch cookies between profiles.  Allows the
      ability to, for example, switch streaming service accounts between
      profiles for proper access to the pages displayed by the browser panels
      (such as chat windows).
      fe043f2b
    • J
      UI: Switch to new browser panel code · 940fd23c
      jp9000 提交于
      940fd23c
    • J
      UI: Improve/refactor autoconfig/settings service UI · 24bcface
      jp9000 提交于
      Makes it so that services can have custom handling on a per-service
      basis.  The bottom part of the service pane is now a stacked widget
      which can now be customized for different types of services
      (particularly OAuth services).
      24bcface
    • J
      UI: Add function for adding extra docks to main window · dcf48e8f
      jp9000 提交于
      dcf48e8f
    • J
      UI: Make assignDockToggle an actual function · 412520c5
      jp9000 提交于
      Allows using it outside of the constructor.
      412520c5
    • J
      UI: Add function to get main window more easily · b89c2b76
      jp9000 提交于
      Adds OBSBasic::Get() to just quickly return the main window.
      b89c2b76
    • J
      UI: Add functions for executing funcs without blocking · a0eab1a2
      jp9000 提交于
      Adds functions for executing functions within separate threads without
      blocking the user interface, or by blocking the user interface with a
      dialog box.
      a0eab1a2
    • J
      UI: Add CreateQThread helper function · 74cda9a2
      jp9000 提交于
      Allows creating a QThread via an std::function.  A backward-compatible
      alternative to QThread::create for Qt versions older than 5.10 (when it
      became available in Qt).
      74cda9a2
    • J
      UI: Unlock UI by default · 58f4a639
      jp9000 提交于
      58f4a639
    • J
      UI: Add alternate constructor for RemoteTextThread · 08e6dcd5
      jp9000 提交于
      Allows specifying extra headers.
      08e6dcd5
    • J
      UI: Add timeout parameter to RemoteTextThread · 44834bbf
      jp9000 提交于
      Allows specifying a timeout for the operation.
      44834bbf