1. 26 6月, 2014 2 次提交
    • J
      Remove 'locale' parameter from all callbacks · 0b4a259e
      jp9000 提交于
      The locale parameter was a mistake, because it puts extra needless
      burden upon the module developer to have to handle this variable for
      each and every single callback function.  The parameter is being removed
      in favor of a single centralized module callback function that
      specifically updates locale information for a module only when needed.
      0b4a259e
    • J
      Add API for setting/getting current locale · 899f0530
      jp9000 提交于
      This API is used to set the current locale for libobs, which it will set
      for all modules when a module is loaded or specifically when the locale
      is manually changed.
      899f0530
  2. 25 6月, 2014 2 次提交
  3. 23 6月, 2014 1 次提交
  4. 19 6月, 2014 1 次提交
  5. 17 6月, 2014 2 次提交
    • J
      UI: Open properties on user source creation · 85ee5d59
      jp9000 提交于
      Every time I created a source I found myself in need to actually open up
      the properties.  It was getting somewhat on my nerves, so I decided to
      just make it automatically pop up when the source is created.
      85ee5d59
    • J
      Fix a number of warnings · ed5b4f59
      jp9000 提交于
      Structures with anonymous unions would a warning when you do a brace
      assignment on them.
      
      Also fixed some unused parameters and removed some unused variables.
      ed5b4f59
  6. 16 6月, 2014 2 次提交
    • J
      UI: Add padding to scene edges for editing · 98ddb846
      jp9000 提交于
      Add a 10 pixel padding to the sides and remove viewport cutting to
      ensure that the editing rectangles are visible even when in the upper
      corners.
      
      Also, add a black background for the actual 'scene' in the preview
      window so that the scene boundries are actually visible in relation to
      the rest of the preview space.
      98ddb846
    • J
      UI: Add scene editing · 452e0695
      jp9000 提交于
      So, scene editing was interesting (and by interesting I mean
      excruciating).  I almost implemented 'manipulator' visuals (ala 3dsmax
      for example), and used 3 modes for controlling position/rotation/size,
      but in a 2D editing, it felt clunky, so I defaulted back to simply
      click-and-drag for movement, and then took a similar though slightly
      different looking approach for handling scaling and reszing.
      
      I also added a number of menu item helpers related to positioning,
      scaling, rotating, flipping, and resetting the transform back to
      default.
      
      There is also a new 'transform' dialog (accessible via menu) which will
      allow you to manually edit every single transform variable of a scene
      item directly if desired.
      
      If a scene item does not have bounds active, pulling on the sides of a
      source will cause it to resize it via base scale rather than by the
      bounding box system (if the source resizes that scale will apply).  If
      bounds are active, it will modify the bounding box only instead.
      
      How a source scales when a bounding box is active depends on the type of
      bounds being used.  You can set it to scale to the inner bounds, the
      outer bounds, scale to bounds width only, scale to bounds height only,
      and a setting to stretch to bounds (which forces a source to always draw
      at the bounding box size rather than be affected by its internal size).
      You can also set it to be used as a 'maximum' size, so that the source
      doesn't necessarily get scaled unless it extends beyond the bounds.
      
      Like in OBS1, objects will snap to the edges unless the control key is
      pressed.  However, this will now happen even if the object is rotated or
      oriented in any strange way.  Snapping will also occur when stretching
      or changing the bounding box size.
      452e0695
  7. 30 5月, 2014 1 次提交
  8. 23 5月, 2014 1 次提交
  9. 22 5月, 2014 1 次提交
  10. 21 5月, 2014 1 次提交
    • J
      UI: Add FLV file output (sharing encoders) · 00086f08
      jp9000 提交于
      Implement the 'file path' in output settings, and implement the 'start
      recording' button, though for the time being I'm just going to make it
      use a directory rather than allow custom file names.
      
      This file output will actually share the video and audio encoder with
      the stream.
      
      I don't really know what to do about MP4 -- I don't really like the idea
      of saving directly in the program, if you do and the program crashes,
      that MP4 file is lost.  I'm contemplating making some sort of mp4 output
      process stub.  So no MP4 file output for the time being.
      
      If you need MP4, just remux it with FFmpeg:
      
      ffmpeg -i flv_file.flv -acodec copy -vcodec copy mp4_file.mp4
      00086f08
  11. 19 5月, 2014 1 次提交
    • J
      Add help menu with log file uploading · 5ba8b09c
      jp9000 提交于
      Added github gist API uploading to the help menu to help make problems a
      bit easier to debug in the future.  It's somewhat vital that this
      functionality be implemented before any release in order to analyze any
      given problem a user may be experiencing.
      5ba8b09c
  12. 16 5月, 2014 2 次提交
  13. 15 5月, 2014 2 次提交
  14. 13 5月, 2014 3 次提交
  15. 12 5月, 2014 1 次提交
  16. 11 5月, 2014 1 次提交
    • J
      Add 'source selection' dialog · 345c7013
      jp9000 提交于
      Add a 'source selection' dialog to replace the 'enter a name' dialog.
      This new dialog allows you to make new instances of pre-existing sources
      so that you can add a pre-existing source to a different scene, or in to
      the same scene more than once.
      
      Also started implementing locale.
      
      Comtemplating switching to JSON-based locale later, so we can add things
      like descriptions/disambiguation, and so we can use jansson's built-in
      hash table when doing the string lookup.
      345c7013
  17. 09 5月, 2014 1 次提交
  18. 04 5月, 2014 1 次提交
    • J
      Add (temporary terrible) volume controls · 52746c25
      jp9000 提交于
       - Add volume control
      
         These volume controls are basically nothing more than sliders.  They
         look terrible and hopefully will be as temporary as they are
         terrible.
      
       - Allow saving of specific non-user sources via obs_load_source and
         obs_save_source functions.
      
       - Save data of desktop/mic audio sources (sync data, volume data, etc),
         and load the data on startup.
      
       - Make it so that a scene is created by default if first time using the
         application.  On certain operating systems where supported, a default
         capture will be created.  Desktop capture on mac, particularly.  Not
         sure what to do about windows because monitor capture on windows 7 is
         completely terrible and is bad to start users off with.
      52746c25
  19. 02 5月, 2014 1 次提交
  20. 29 4月, 2014 2 次提交
  21. 27 4月, 2014 1 次提交
    • J
      Add preliminary saving/loading of scene/sources · 65455c27
      jp9000 提交于
      This saves scenes/sources from json on exit, and properly loads it back
      up when starting up the program again, as well as the currently active
      scene.
      
      I had to add a 'load' and 'save' callback to the source interface
      structure because I realizes that certain sources (such as scenes)
      operate different with their saved data; scenes for example would have
      to keep track of their settings information constantly, and that was
      somewhat unacceptable to make it functional.
      
      The optional 'load' callback will be called only after having loaded
      setttings specifically from file/imported data, and the 'save' function
      will be called only specifically when data actually needs to be saved.
      
      I also had to adjust the obs_scene code so that it's a regular input
      source type now, and I also modified it so that it doesn't have some
      strange custom creation code anymore.  The obs_scene_create function is
      now simply just a wrapper for obs_source_create.  You could even create
      a scene with obs_source_create manually as well.
      65455c27
  22. 24 4月, 2014 1 次提交
    • J
      obs-studio UI: Implement stream settings UI · 8830c410
      jp9000 提交于
       - Updated the services API so that it links up with an output and
         the output gets data from that service rather than via settings.
         This allows the service context to have control over how an output is
         used, and makes it so that the URL/key/etc isn't necessarily some
         static setting.
      
         Also, if the service is attached to an output, it will stick around
         until the output is destroyed.
      
       - The settings interface has been updated so that it can allow the
         usage of service plugins.  What this means is that now you can create
         a service plugin that can control aspects of the stream, and it
         allows each service to create their own user interface if they create
         a service plugin module.
      
       - Testing out saving of current service information.  Saves/loads from
         JSON in to obs_data_t, seems to be working quite nicely, and the
         service object information is saved/preserved on exit, and loaded
         again on startup.
      
       - I agonized over the settings user interface for days, and eventually
         I just decided that the only way that users weren't going to be
         fumbling over options was to split up the settings in to simple/basic
         output, pre-configured, and then advanced for advanced use (such as
         multiple outputs or services, which I'll implement later).
      
         This was particularly painful to really design right, I wanted more
         features and wanted to include everything in one interface but
         ultimately just realized from experience that users are just not
         technically knowledgable about it and will end up fumbling with the
         settings rather than getting things done.
      
         Basically, what this means is that casual users only have to enter in
         about 3 things to configure their stream:  Stream key, audio bitrate,
         and video bitrate.  I am really happy with this interface for those
         types of users, but it definitely won't be sufficient for advanced
         usage or for custom outputs, so that stuff will have to be separated.
      
       - Improved the JSON usage for the 'common streaming services' context,
         I realized that JSON arrays are there to ensure sorting, while
         forgetting that general items are optimized for hashing.  So
         basically I'm just using arrays now to sort items in it.
      8830c410
  23. 23 4月, 2014 1 次提交
    • J
      Fix draw callback for main/properties views · 9edde0b8
      jp9000 提交于
      Drawing position wasn't being calculated correctly, viewport/ortho
      should have been used instead.  It would cause items to render out of
      position on the main viewport (though not on the actual output)
      9edde0b8
  24. 17 4月, 2014 3 次提交
  25. 16 4月, 2014 2 次提交
    • P
      Track properties window lifetime via QPointer · be55c063
      Palana 提交于
      Previously the properties window would sometimes not receive
      a closeEvent, leaving a dangling pointer in OBSBasicMain (and resulting
      in a crash when trying to open a new properties window or closing
      the application)
      be55c063
    • P
      Add Settings entry to File menu · b5276ea1
      Palana 提交于
      This automagically creates a (localized?) Preferences entry on OSX as well
      b5276ea1
  26. 14 4月, 2014 1 次提交
  27. 08 4月, 2014 1 次提交
    • J
      Implement RTMP module (still needs drop code) · 92522d18
      jp9000 提交于
       - Implement the RTMP output module.  This time around, we just use a
         simple FLV muxer, then just write to the stream with RTMP_Write.
         Easy and effective.
      
       - Fix the FLV muxer, the muxer now outputs proper FLV packets.
      
       - Output API:
         * When using encoders, automatically interleave encoded packets
           before sending it to the output.
      
         * Pair encoders and have them automatically wait for the other to
           start to ensure sync.
      
         * Change 'obs_output_signal_start_fail' to 'obs_output_signal_stop'
           because it was a bit confusing, and doing this makes a lot more
           sense for outputs that need to stop suddenly (disconnections/etc).
      
       - Encoder API:
         * Remove some unnecessary encoder functions from the actual API and
           make them internal.  Most of the encoder functions are handled
           automatically by outputs anyway, so there's no real need to expose
           them and end up inadvertently confusing plugin writers.
      
         * Have audio encoders wait for the video encoder to get a frame, then
           start at the exact data point that the first video frame starts to
           ensure the most accrate sync of video/audio possible.
      
         * Add a required 'frame_size' callback for audio encoders that
           returns the expected number of frames desired to encode with.  This
           way, the libobs encoder API can handle the circular buffering
           internally automatically for the encoder modules, so encoder
           writers don't have to do it themselves.
      
       - Fix a few bugs in the serializer interface.  It was passing the wrong
         variable for the data in a few cases.
      
       - If a source has video, make obs_source_update defer the actual update
         callback until the tick function is called to prevent threading
         issues.
      92522d18
  28. 05 4月, 2014 1 次提交