1. 02 4月, 2014 2 次提交
    • J
      Add librtmp to obs-outputs · ed6fc7b1
      jp9000 提交于
      Note that this is a somewhat heavily modified custom version of librtmp.
      I modified all the platform specific code that we were using for the
      OBS1 to make it platform-independent.
      
      I don't really like the code in this library, but it works well enough,
      so I can't really fault anyone for it.  It's just very..  unclean.  Even
      for a C library, quite unclean.  Some parts are also a little less safe
      than I'd prefer as well.
      ed6fc7b1
    • J
      Improve serializer and add array serializer · d42ff7f0
      jp9000 提交于
      The serializer code is meant to be used as a means of reading/writing
      data from any arbitrary type of input/output.
      
      The array output serializer makes it so we can stream data to a dynamic
      array on the fly.
      d42ff7f0
  2. 30 3月, 2014 3 次提交
    • J
      Fix CMakeLists.txt for each project (my fault) · 263f9408
      jp9000 提交于
      263f9408
    • J
      Minor fix to GL texture cleanup · b2885480
      jp9000 提交于
      Don't clear any data if it's a dummy texture.
      b2885480
    • J
      Add dummy GL texture flag & direct object access · 0a86e8fb
      jp9000 提交于
       - Add dummy GL texture support to allow libobs texture references to be
         created for GL without
      
       - Add a texture_getobj function to allow the retrieval of the
         context-specific object, such as the D3D texture pointer, or the
         OpenGL texture object handle.
      
       - Also cleaned up the export stuff.  I realized it was all totally
         superfluous.  Kind of a dumb moment, but nice to clean it up
         regardless.
      0a86e8fb
  3. 28 3月, 2014 1 次提交
    • J
      Implement encoder usage with outputs · 6da26a3a
      jp9000 提交于
       - Make it so that encoders can be assigned to outputs.  If an encoder
         is destroyed, it will automatically remove itself from that output.
         I specifically didn't want to do reference counting because it leaves
         too much potential for unchecked references and it just felt like it
         would be more trouble than it's worth.
      
       - Add a 'flags' value to the output definition structure.  This lets
         the output specify if it uses video/audio, and whether the output is
         meant to be used with OBS encoders or not.
      
       - Remove boilerplate code for outputs.  This makes it easier to program
         outputs.  The boilerplate code involved before was mostly just
         involving connecting to the audio/video data streams directly in each
         output plugin.
      
         Instead of doing that, simply add plugin callback functions for
         receiving video/audio (either encoded or non-encoded, whichever it's
         set to use), and then call obs_output_begin_data_capture and
         obs_output_end_data_capture to automatically handle setting up
         connections to raw or encoded video/audio streams for the plugin.
      
       - Remove 'active' function from output callbacks, as it's no longer
         really needed now that the libobs output context automatically knows
         when the output is active or not.
      
       - Make it so that an encoder cannot be destroyed until all data
         connections to the encoder have been removed.
      
       - Change the 'start' and 'stop' functions in the encoder interface to
         just an 'initialize' callback, which initializes the encoder.
      
       - Make it so that the encoder must be initialized first before the data
         stream can be started.  The reason why initialization was separated
         from starting the encoder stream was because we need to be able to
         check that the settings used with the encoder *can* be used first.
      
         This problem was especially annoying if you had both video/audio
         encoding.  Before, you'd have to check the return value from
         obs_encoder_start, and if that second encoder fails, then you
         basically had to stop the first encoder again, making for
         unnecessary boilerplate code whenever starting up two encoders.
      6da26a3a
  4. 26 3月, 2014 1 次提交
  5. 25 3月, 2014 1 次提交
  6. 24 3月, 2014 1 次提交
    • P
      Add properties to osx display capture · 7707773f
      Palana 提交于
      Also add support for capturing displays that are not the main display as
      preparation for moving the code from test-plugins into a proper plugin
      in the future
      7707773f
  7. 23 3月, 2014 2 次提交
    • J
      Initialize properties with current settings · 35d7d4ff
      jp9000 提交于
      I neglected to make it initialize the actual control values with the
      current settings
      35d7d4ff
    • J
      Add source properties window (very preliminary) · d9251f9e
      jp9000 提交于
       - Add a properties window for sources so that you can now actually edit
         the settings for sources.  Also, display the source by itself in the
         window (Note: not working on mac, and possibly not working on linux).
      
         When changing the settings for a source, it will call
         obs_source_update on that source when you have modified any values
         automatically.
      
       - Add a properties 'widget', eventually I want to turn this in to a
         regular nice properties view like you'd see in the designer, but
         right now it just uses a form layout in a QScrollArea with regular
         controls to display the properties.  It's clunky but works for the
         time being.
      
       - Make it so that swap chains and the main graphics subsystem will
         automatically use at least one backbuffer if none was specified
      
       - Fix bug where displays weren't added to the main display array
      
       - Make it so that you can get the properties of a source via the actual
         pointer of a source/encoder/output in addition to being able to look
         up properties via identifier.
      
       - When registering source types, check for required functions (wasn't
         doing it before).  getheight/getwidth should not be optional if it's
         a video source as well.
      
       - Add an RAII OBSObj wrapper to obs.hpp for non-reference-counted
         libobs pointers
      
       - Add an RAII OBSSignal wrapper to obs.hpp for libobs signals to
         automatically disconnect them on destruction
      
       - Move the "scale and center" calculation in window-basic-main.cpp to
         its own function and in its own source file
      
       - Add an 'update' callback to WASAPI audio sources
      d9251f9e
  8. 18 3月, 2014 1 次提交
    • J
      Fix GNU atomic builtins · 6c904650
      jp9000 提交于
      The ones that were being used returned the previous value rather than
      the new value
      6c904650
  9. 17 3月, 2014 10 次提交
    • J
      Make sure ot use the right enum name · 950f780b
      jp9000 提交于
      Microsoft's garbage compiler just doesn't even..  read the names of
      enums.  It sees an enum and goes "durr, that's an int" without even
      properly evaluating it.  Just total garbage, as per usual.
      950f780b
    • J
      obs-data: Internally store as int or double · 291d9961
      jp9000 提交于
      If integers are used, then store as integers.  If doubles are used, then
      store as doubles.  This way precision issues are prevented.
      291d9961
    • J
      Change a reference variable to be volatile long · 2b4e381c
      jp9000 提交于
      Removed some warnings associated with it, was the wrong variable type.
      2b4e381c
    • J
      Fix Qt5 with debian-based builds (for real) · 4444ca55
      jp9000 提交于
      You have to use qt5_use_modules otherwise it just won't always work.  I
      don't know how it was working before with cmake, but apparently this
      does the trick to ensure that all the necessary libraries and includes
      are added.  ..Might require cmake 3.8.9 though.  ..I do hope that
      doesn't end up being a problem.
      4444ca55
    • J
      Use atomic functions where appropriate · 154e0c59
      jp9000 提交于
      Also, rename atomic functions to be consistent with the rest of the
      platform/threading functions, and move atomic functions to threading*
      files rather than platform* files
      154e0c59
    • J
      Set defaults automatically · 3ed647b8
      jp9000 提交于
      Automatically query defaults for sources/outputs/encoders and set them
      before calling create
      3ed647b8
    • J
      Add Qt5 to includes (caused issues with debian) * · 3f771cf6
      jp9000 提交于
      * Not entirely sure if this will fix it, johnnypatterson claimed it
        would, but this checked out on my mac so at the very least I don't
        think it should hurt anything
      3f771cf6
    • J
      Call send_packet instead of.. doing nothing · 2920369d
      jp9000 提交于
      GCC warned of this, but strangely not clang.
      2920369d
    • J
      Add atomic increment/decrement platform funcs · bb92d582
      jp9000 提交于
      bb92d582
    • J
      Implement encoder interface (still preliminary) · fd37d9e9
      jp9000 提交于
       - Implement OBS encoder interface.  It was previously incomplete, but
         now is reaching some level of completion, though probably should
         still be considered preliminary.
      
         I had originally implemented it so that encoders only have a 'reset'
         function to reset their parameters, but I felt that having both a
         'start' and 'stop' function would be useful.
      
         Encoders are now assigned to a specific video/audio media output each
         rather than implicitely assigned to the main obs video/audio
         contexts.  This allows separate encoder contexts that aren't
         necessarily assigned to the main video/audio context (which is useful
         for things such as recording specific sources).  Will probably have
         to do this for regular obs outputs as well.
      
         When creating an encoder, you must now explicitely state whether that
         encoder is an audio or video encoder.
      
         Audio and video can optionally be automatically converted depending
         on what the encoder specifies.
      
         When something 'attaches' to an encoder, the first attachment starts
         the encoder, and the encoder automatically attaches to the media
         output context associated with it.  Subsequent attachments won't have
         the same effect, they will just start receiving the same encoder data
         when the next keyframe plays (along with SEI if any).  When detaching
         from the encoder, the last detachment will fully stop the encoder and
         detach the encoder from the media output context associated with the
         encoder.
      
         SEI must actually be exported separately; because new encoder
         attachments may not always be at the beginning of the stream, the
         first keyframe they get must have that SEI data in it.  If the
         encoder has SEI data, it needs only add one small function to simply
         query that SEI data, and then that data will be handled automatically
         by libobs for all subsequent encoder attachments.
      
       - Implement x264 encoder plugin, move x264 files to separate plugin to
         separate necessary dependencies.
      
       - Change video/audio frame output structures to not use const
         qualifiers to prevent issues with non-const function usage elsewhere.
         This was an issue when writing the x264 encoder, as the x264 encoder
         expects non-const frame data.
      
         Change stagesurf_map to return a non-const data type to prevent this
         as well.
      
       - Change full range parameter of video scaler to be an enum rather than
         boolean
      fd37d9e9
  10. 12 3月, 2014 8 次提交
  11. 11 3月, 2014 10 次提交