1. 05 1月, 2019 1 次提交
  2. 23 4月, 2018 1 次提交
  3. 04 1月, 2018 1 次提交
  4. 02 1月, 2018 1 次提交
    • J
      libobs: Add obs_render_main_texture · 7f6cf97b
      jp9000 提交于
      (Note: This commit also modifies UI and test)
      
      This makes it so that main preview panes are rendered with the main
      output texture rather than re-rendering the main view.  The view will
      render all objects again, whereas the output texture will be a single
      texture render of the same exact thing.
      
      Also fixes some abnormal artifacting when scaling the main preview pane.
      7f6cf97b
  5. 28 10月, 2017 1 次提交
  6. 04 10月, 2017 1 次提交
  7. 13 9月, 2017 1 次提交
  8. 13 5月, 2017 1 次提交
  9. 07 5月, 2017 1 次提交
  10. 23 8月, 2016 1 次提交
    • J
      libobs: Add obs_get_active_fps function · 95ce5560
      jp9000 提交于
      Allows getting the current active framerate that the core is rendering
      with.  This takes in to account any rendering lag or stalls that may be
      occurring.
      95ce5560
  11. 29 6月, 2016 1 次提交
    • J
      libobs: Add ability to use scale filters on scene items · d4983383
      jp9000 提交于
      Allows the ability to use scale filters such as point, bicubic, lanczos
      on specific scene items, disabled by default.  When using one of the
      latter two options, if the item's scale is under half of the source's
      original size, it uses the bilinear low resolution downscale shader
      instead.
      d4983383
  12. 27 1月, 2016 1 次提交
  13. 26 1月, 2016 1 次提交
  14. 22 12月, 2015 1 次提交
    • J
      libobs: Don't track active transitions · a702d88c
      jp9000 提交于
      This was originally used for calculating audio volume if transitions
      were active, but transitions won't work that way so tracking the active
      transitions is no longer needed.
      a702d88c
  15. 15 10月, 2015 1 次提交
    • J
      libobs: Use byte sequence for non-breaking spaces · 1bcbaf8e
      jp9000 提交于
      Use explicit UTF-8 byte sequence for the "no-break space" character.
      
      Prevents issues with certain editors, and fixes the following compiler
      warning on Visual C++:
      
      warning C4819: The file contains a character that cannot be represented
      in the current code page (X). Save the file in Unicode format to prevent
      data loss
      1bcbaf8e
  16. 12 8月, 2015 2 次提交
  17. 05 8月, 2015 1 次提交
    • J
      (API Change) libobs: Remove main window funcs/vars · b89ea47b
      jp9000 提交于
      (Non-compiling commit: windowless-context branch)
      
      API Changed:
      ---------------------
      Removed functions:
      - obs_add_draw_callback
      - obs_remove_draw_callback
      - obs_resize
      - obs_preview_set_enabled
      - obs_preview_enabled
      
      Removed member variables from struct obs_video_info:
      - window_width
      - window_height
      - window
      
      Summary:
      ---------------------
      Changes the core libobs API to not be dependent upon a main window/view.
      If you wish to draw to a window/view, use an obs_display object to
      handle it.
      
      This allows the use of libobs without requiring a window to be present
      on the system.  This is also prunes code that had to be needlessly
      duplicated to handle the "main" window.
      b89ea47b
  18. 25 7月, 2015 1 次提交
    • A
      libobs: Use one copy for RGBA output when possible · ffb3ca45
      Anthony Catel 提交于
      A minor optimization: in copy_rgbx_frame (used when libobs is set to
      output RGBA frames instead of YUV frames), if the line sizes for the
      source and destination match, just use a single memcpy call for all of
      the data instead of multiple memcpy calls.
      ffb3ca45
  19. 05 6月, 2015 1 次提交
    • J
      libobs: Save clamped video time · 51dd204c
      jp9000 提交于
      The "clamped" video time is the system time per video frame that is
      closest to the current system time, but always divisible by the frame
      interval.  For example, if the last frame system timestamp was 1600 and
      the new frame is 2500, but the frame interval is 800, then the
      "clamped" video time is 2400.
      
      This clamped value is useful to get the relative system time without any
      jitter.
      51dd204c
  20. 07 5月, 2015 1 次提交
  21. 18 4月, 2015 1 次提交
  22. 16 4月, 2015 1 次提交
    • J
      libobs: Fix RGB output · a32f8a5d
      jp9000 提交于
      RGB output wasn't occurring due to the fact that the frame simply wasn't
      being copied.
      a32f8a5d
  23. 10 4月, 2015 1 次提交
    • J
      libobs: Use bilinear low res scale effect · 13fd6ff0
      jp9000 提交于
      The normal scaling methods cannot sample enough pixels to create an
      accurate output image when the output size is under half the base size,
      so use the bilinear low resolution scaling effect in that case instead
      to ensure a more accurate low resolution image.
      13fd6ff0
  24. 15 1月, 2015 1 次提交
    • J
      libobs: Fix calculation copying aligned textures · 05fc9c5b
      jp9000 提交于
      Direct3D textures are usually aligned to a specific pitch, so their
      internal width is often not equal to the expected output width; this
      means that if we want to use it on our texture output, that we must
      de-align the texture while copying the texture data.
      
      However, I unintentionally messed up the calculation at some point with
      RGBA textures, so the variable size I was supposed to be using was
      supposed to be multiplied by 4 (for RGBA), while I was still expecting
      single channel data.  So, if the texture width was something like 1332,
      the source (directx) texture line size would be somewhere at or above
      5328 (because it's RGBA), then destination is at 1332 (YUV luma plane),
      and it would unintentionally treat 3996 (or 5328 - 1332) bytes as the
      unused alignment data.  So this fixes that miscalculation.
      05fc9c5b
  25. 06 1月, 2015 1 次提交
    • J
      libobs: Fix sync bug in new frame handling code · b120f7cc
      jp9000 提交于
      The return value of os_sleepto_ns is true if it waited to the specified
      time, and false if the current time is past the specified time.  So it
      basically returns true if it successfully waited.
      
      I just didn't check the return value properly here, so it ended up just
      setting the count of frames to 1 if overshot, ultimately causing sync
      issues.
      b120f7cc
  26. 03 1月, 2015 1 次提交
  27. 31 12月, 2014 1 次提交
    • J
      libobs: Redesign/optimize frame encoding handling · 11106c2f
      jp9000 提交于
      Previously, the design for the interaction between the encoder thread
      and the graphics thread was that the encoder thread would signal to the
      graphics thread when to start drawing each frame.  The original idea
      behind this was to prevent mutually cascading stalls of encoding or
      graphics rendering (i.e., if rendering took too long, then encoding
      would have to catch up, then rendering would have to catch up again, and
      so on, cascading upon each other).  The ultimate goal was to prevent
      encoding from impacting graphics and vise versa.
      
      However, eventually it was realized that there were some fundamental
      flaws with this design.
      
      1. Stray frame duplication.  You could not guarantee that a frame would
         render on time, so sometimes frames would unintentionally be lost if
         there was any sort of minor hiccup or if the thread took too long to
         be scheduled I'm guessing.
      
      2. Frame timing in the rendering thread was less accurate.  The only
         place where frame timing was accurate was in the encoder thread, and
         the graphics thread was at the whim of thread scheduling.  On higher
         end computers it was typically fine, but it was just generally not
         guaranteed that a frame would be rendered when it was supposed to be
         rendered.
      
      So the solution (originally proposed by r1ch and paibox) is to instead
      keep the encoding and graphics threads separate as usual, but instead of
      the encoder thread controlling the graphics thread, the graphics thread
      now controls the encoder thread.  The encoder thread keeps a limited
      cache of frames, then the graphics thread copies frames in to the cache
      and increments a semaphore to schedule the encoder thread to encode that
      data.
      
      In the cache, each frame has an encode counter.  If the frame cache is
      full (e.g., the encoder taking too long to return frames), it will not
      cache a new frame, but instead will just increment the counter on the
      last frame in the cache to schedule that frame to encode again, ensuring
      that frames are on time and reducing CPU usage by lowering video
      complexity.  If the graphics thread takes too long to render a frame,
      then it will add that frame with the count value set to the total amount
      of frames that were missed (actual legitimately duplicated frames).
      
      Because the cache gives many frames of breathing room for the encoder to
      encode frames, this design helps improve results especially when using
      encoding presets that have higher complexity and CPU usage, minimizing
      the risk of needlessly skipped or duplicated frames.
      
      I also managed to sneak in what should be a bit of an optimization to
      reduce copying of frame data, though how much of an optimization it
      ultimately ends up being is debatable.
      
      So to sum it up, this commit increases accuracy of frame timing,
      completely removes stray frame duplication, gives better results for
      higher complexity encoding presets, and potentially optimizes the frame
      pipeline a tiny bit.
      11106c2f
  28. 28 12月, 2014 1 次提交
    • J
      libobs: Refactor source volume transition design · c431ac6a
      jp9000 提交于
      This changes the way source volume handles transitioning between being
      active and inactive states.
      
      The previous way that transitioning handled volume was that it set the
      presentation volume of the source and all of its sub-sources to 0.0 if
      the source was inactive, and 1.0 if active.  Transition sources would
      then also set the presentation volume for sub-sources to whatever their
      transitioning volume was.  However, the problem with this is that the
      design didn't take in to account if the source or its sub-sources were
      active anywhere else, so because of that it would break if that ever
      happened, and I didn't realize that when I was designing it.
      
      So instead, this completely overhauls the design of handling
      transitioning volume.  Each frame, it'll go through all sources and
      check whether they're active or inactive and set the base volume
      accordingly.  If transitions are currently active, it will actually walk
      the active source tree and check whether the source is in a
      transitioning state somewhere.
      
       - If the source is a sub-source of a transition, and it's not active
         outside of the transition, then the transition will control the
         volume of the source.
      
       - If the source is a sub-source of a transition, but it's also active
         outside of the transition, it'll defer to whichever is louder.
      
      This also adds a new callback to the obs_source_info structure for
      transition sources, get_transition_volume, which is called to get the
      transitioning volume of a sub-source.
      c431ac6a
  29. 15 12月, 2014 1 次提交
    • J
      (API Change) libobs: Add bicubic/lanczos scaling · c8822055
      jp9000 提交于
      This adds bicubic and lanczos scaling capability to libobs to improve
      scaling quality and sharpness when the output resolution has to be
      scaled relative to the base resolution.  Bilinear is also available,
      although bilinear has rather poor quality and causes scaling to appear
      blurry.
      
      If the output resolution is close to the base resolution, then bilinear
      is used instead as an optimization, as there's no need to use these
      shaders if scaling is not in use.
      
      The Bicubic and Lanczos effects are also exposed via exported function
      to allow the ability to use those shaders in plugin modules if desired.
      
      The API change adds a variable 'scale_type' to the obs_video_info
      structure that allows the user interface to choose what type of scaling
      filter should be used.
      c8822055
  30. 12 12月, 2014 1 次提交
    • J
      (API Change) Add colorspace info to obs_video_info · b0786228
      jp9000 提交于
      This was an important change because we were originally using an
      hard-coded 709/partial range color matrix for the output, which was
      causing problems for people wanting to use different formats or color
      spaces.  This will now automatically generate the color matrix depending
      on the format, color space, and range, or use an identity matrix if the
      video format is RGB instead of YUV.
      b0786228
  31. 08 12月, 2014 1 次提交
    • J
      libobs: Add flush to video pipeline · 87ac9c91
      jp9000 提交于
      On certain GPUs, if you don't flush and the window is minimized it can
      endlessly accumulate memory due to what I'm assuming are driver design
      flaws (though I can't know for sure).  The flush seems to prevent this
      from happening, at least from my tests.  It would be nice if this
      weren't necessary.
      87ac9c91
  32. 23 10月, 2014 1 次提交
    • J
      Add timestamp circlebuf for video input/output · d14dbbc5
      jp9000 提交于
      At the start of each render loop, it would get the timestamp, and then
      it would then assign that timestamp to whatever frame was downloaded.
      However, the frame that was downloaded was usually occurred a number of
      frames ago, so it would assign the wrong timestamp value to that frame.
      
      This fixes that issue by storing the timestamps in a circular buffer.
      d14dbbc5
  33. 14 10月, 2014 1 次提交
  34. 26 9月, 2014 1 次提交
    • J
      (API Change) Remove pointers from all typedefs · c9df41c1
      jp9000 提交于
      Typedef pointers are unsafe.  If you do:
      typedef struct bla *bla_t;
      then you cannot use it as a constant, such as: const bla_t, because
      that constant will be to the pointer itself rather than to the
      underlying data.  I admit this was a fundamental mistake that must
      be corrected.
      
      All typedefs that were pointer types will now have their pointers
      removed from the type itself, and the pointers will be used when they
      are actually used as variables/parameters/returns instead.
      
      This does not break ABI though, which is pretty nice.
      c9df41c1
  35. 10 8月, 2014 2 次提交
    • J
      (API Change) Improve graphics API consistency · 5780f3f1
      jp9000 提交于
      Summary:
      - Prefix all graphics subsystem names with gs_ or GS_
      - Unsquish funciton names (for example _setfloat to _set_float)
      - Changed create functions to be more consistent with the rest of the
        API elsewhere.  For exmaple, instead of
        gs_create_texture/gs_texture_destroy, it's now
        gs_texture_create/gs_texture_destroy
      - Renamed gs_stencil_op enum to gs_stencil_op_type
      
      From:                            To:
      -----------------------------------------------------------
      tvertarray                       gs_tvertarray
      vb_data                          gs_vb_data
      vbdata_create                    gs_vbdata_create
      vbdata_destroy                   gs_vbdata_destroy
      shader_param                     gs_shader_param
      gs_effect                        gs_effect
      effect_technique                 gs_effect_technique
      effect_pass                      gs_effect_pass
      effect_param                     gs_effect_param
      texture_t                        gs_texture_t
      stagesurf_t                      gs_stagesurf_t
      zstencil_t                       gs_zstencil_t
      vertbuffer_t                     gs_vertbuffer_t
      indexbuffer_t                    gs_indexbuffer_t
      samplerstate_t                   gs_samplerstate_t
      swapchain_t                      gs_swapchain_t
      texrender_t                      gs_texrender_t
      shader_t                         gs_shader_t
      sparam_t                         gs_sparam_t
      effect_t                         gs_effect_t
      technique_t                      gs_technique_t
      eparam_t                         gs_eparam_t
      device_t                         gs_device_t
      graphics_t                       graphics_t
      shader_param_type                gs_shader_param_type
      SHADER_PARAM_UNKNOWN             GS_SHADER_PARAM_UNKNOWN
      SHADER_PARAM_BOOL                GS_SHADER_PARAM_BOOL
      SHADER_PARAM_FLOAT               GS_SHADER_PARAM_FLOAT
      SHADER_PARAM_INT                 GS_SHADER_PARAM_INT
      SHADER_PARAM_STRING              GS_SHADER_PARAM_STRING
      SHADER_PARAM_VEC2                GS_SHADER_PARAM_VEC2
      SHADER_PARAM_VEC3                GS_SHADER_PARAM_VEC3
      SHADER_PARAM_VEC4                GS_SHADER_PARAM_VEC4
      SHADER_PARAM_MATRIX4X4           GS_SHADER_PARAM_MATRIX4X4
      SHADER_PARAM_TEXTURE             GS_SHADER_PARAM_TEXTURE
      shader_param_info                gs_shader_param_info
      shader_type                      gs_shader_type
      SHADER_VERTEX                    GS_SHADER_VERTEX
      SHADER_PIXEL                     GS_SHADER_PIXEL
      shader_destroy                   gs_shader_destroy
      shader_numparams                 gs_shader_get_num_params
      shader_getparambyidx             gs_shader_get_param_by_idx
      shader_getparambyname            gs_shader_get_param_by_name
      shader_getviewprojmatrix         gs_shader_get_viewproj_matrix
      shader_getworldmatrix            gs_shader_get_world_matrix
      shader_getparaminfo              gs_shader_get_param_info
      shader_setbool                   gs_shader_set_bool
      shader_setfloat                  gs_shader_set_float
      shader_setint                    gs_shader_set_int
      shader_setmatrix3                gs_shader_setmatrix3
      shader_setmatrix4                gs_shader_set_matrix4
      shader_setvec2                   gs_shader_set_vec2
      shader_setvec3                   gs_shader_set_vec3
      shader_setvec4                   gs_shader_set_vec4
      shader_settexture                gs_shader_set_texture
      shader_setval                    gs_shader_set_val
      shader_setdefault                gs_shader_set_default
      effect_property_type             gs_effect_property_type
      EFFECT_NONE                      GS_EFFECT_NONE
      EFFECT_BOOL                      GS_EFFECT_BOOL
      EFFECT_FLOAT                     GS_EFFECT_FLOAT
      EFFECT_COLOR                     GS_EFFECT_COLOR
      EFFECT_TEXTURE                   GS_EFFECT_TEXTURE
      effect_param_info                gs_effect_param_info
      effect_destroy                   gs_effect_destroy
      effect_gettechnique              gs_effect_get_technique
      technique_begin                  gs_technique_begin
      technique_end                    gs_technique_end
      technique_beginpass              gs_technique_begin_pass
      technique_beginpassbyname        gs_technique_begin_pass_by_name
      technique_endpass                gs_technique_end_pass
      effect_numparams                 gs_effect_get_num_params
      effect_getparambyidx             gs_effect_get_param_by_idx
      effect_getparambyname            gs_effect_get_param_by_name
      effect_updateparams              gs_effect_update_params
      effect_getviewprojmatrix         gs_effect_get_viewproj_matrix
      effect_getworldmatrix            gs_effect_get_world_matrix
      effect_getparaminfo              gs_effect_get_param_info
      effect_setbool                   gs_effect_set_bool
      effect_setfloat                  gs_effect_set_float
      effect_setint                    gs_effect_set_int
      effect_setmatrix4                gs_effect_set_matrix4
      effect_setvec2                   gs_effect_set_vec2
      effect_setvec3                   gs_effect_set_vec3
      effect_setvec4                   gs_effect_set_vec4
      effect_settexture                gs_effect_set_texture
      effect_setval                    gs_effect_set_val
      effect_setdefault                gs_effect_set_default
      texrender_create                 gs_texrender_create
      texrender_destroy                gs_texrender_destroy
      texrender_begin                  gs_texrender_begin
      texrender_end                    gs_texrender_end
      texrender_reset                  gs_texrender_reset
      texrender_gettexture             gs_texrender_get_texture
      GS_BUILDMIPMAPS                  GS_BUILD_MIPMAPS
      GS_RENDERTARGET                  GS_RENDER_TARGET
      gs_device_name                   gs_get_device_name
      gs_device_type                   gs_get_device_type
      gs_entercontext                  gs_enter_context
      gs_leavecontext                  gs_leave_context
      gs_getcontext                    gs_get_context
      gs_renderstart                   gs_render_start
      gs_renderstop                    gs_render_stop
      gs_rendersave                    gs_render_save
      gs_getinput                      gs_get_input
      gs_geteffect                     gs_get_effect
      gs_create_effect_from_file       gs_effect_create_from_file
      gs_create_effect                 gs_effect_create
      gs_create_vertexshader_from_file gs_vertexshader_create_from_file
      gs_create_pixelshader_from_file  gs_pixelshader_create_from_file
      gs_create_texture_from_file      gs_texture_create_from_file
      gs_resetviewport                 gs_reset_viewport
      gs_set2dmode                     gs_set_2d_mode
      gs_set3dmode                     gs_set_3d_mode
      gs_create_swapchain              gs_swapchain_create
      gs_getsize                       gs_get_size
      gs_getwidth                      gs_get_width
      gs_getheight                     gs_get_height
      gs_create_texture                gs_texture_create
      gs_create_cubetexture            gs_cubetexture_create
      gs_create_volumetexture          gs_voltexture_create
      gs_create_zstencil               gs_zstencil_create
      gs_create_stagesurface           gs_stagesurface_create
      gs_create_samplerstate           gs_samplerstate_create
      gs_create_vertexshader           gs_vertexshader_create
      gs_create_pixelshader            gs_pixelshader_create
      gs_create_vertexbuffer           gs_vertexbuffer_create
      gs_create_indexbuffer            gs_indexbuffer_create
      gs_gettexturetype                gs_get_texture_type
      gs_load_defaultsamplerstate      gs_load_default_samplerstate
      gs_getvertexshader               gs_get_vertex_shader
      gs_getpixelshader                gs_get_pixel_shader
      gs_getrendertarget               gs_get_render_target
      gs_getzstenciltarget             gs_get_zstencil_target
      gs_setrendertarget               gs_set_render_target
      gs_setcuberendertarget           gs_set_cube_render_target
      gs_beginscene                    gs_begin_scene
      gs_draw                          gs_draw
      gs_endscene                      gs_end_scene
      gs_setcullmode                   gs_set_cull_mode
      gs_getcullmode                   gs_get_cull_mode
      gs_enable_depthtest              gs_enable_depth_test
      gs_enable_stenciltest            gs_enable_stencil_test
      gs_enable_stencilwrite           gs_enable_stencil_write
      gs_blendfunction                 gs_blend_function
      gs_depthfunction                 gs_depth_function
      gs_stencilfunction               gs_stencil_function
      gs_stencilop                     gs_stencil_op
      gs_setviewport                   gs_set_viewport
      gs_getviewport                   gs_get_viewport
      gs_setscissorrect                gs_set_scissor_rect
      gs_create_texture_from_iosurface gs_texture_create_from_iosurface
      gs_create_gdi_texture            gs_texture_create_gdi
      gs_is_compressed_format          gs_is_compressed_format
      gs_num_total_levels              gs_get_total_levels
      texture_setimage                 gs_texture_set_image
      cubetexture_setimage             gs_cubetexture_set_image
      swapchain_destroy                gs_swapchain_destroy
      texture_destroy                  gs_texture_destroy
      texture_getwidth                 gs_texture_get_width
      texture_getheight                gs_texture_get_height
      texture_getcolorformat           gs_texture_get_color_format
      texture_map                      gs_texture_map
      texture_unmap                    gs_texture_unmap
      texture_isrect                   gs_texture_is_rect
      texture_getobj                   gs_texture_get_obj
      cubetexture_destroy              gs_cubetexture_destroy
      cubetexture_getsize              gs_cubetexture_get_size
      cubetexture_getcolorformat       gs_cubetexture_get_color_format
      volumetexture_destroy            gs_voltexture_destroy
      volumetexture_getwidth           gs_voltexture_get_width
      volumetexture_getheight          gs_voltexture_get_height
      volumetexture_getdepth           gs_voltexture_getdepth
      volumetexture_getcolorformat     gs_voltexture_get_color_format
      stagesurface_destroy             gs_stagesurface_destroy
      stagesurface_getwidth            gs_stagesurface_get_width
      stagesurface_getheight           gs_stagesurface_get_height
      stagesurface_getcolorformat      gs_stagesurface_get_color_format
      stagesurface_map                 gs_stagesurface_map
      stagesurface_unmap               gs_stagesurface_unmap
      zstencil_destroy                 gs_zstencil_destroy
      samplerstate_destroy             gs_samplerstate_destroy
      vertexbuffer_destroy             gs_vertexbuffer_destroy
      vertexbuffer_flush               gs_vertexbuffer_flush
      vertexbuffer_getdata             gs_vertexbuffer_get_data
      indexbuffer_destroy              gs_indexbuffer_destroy
      indexbuffer_flush                gs_indexbuffer_flush
      indexbuffer_getdata              gs_indexbuffer_get_data
      indexbuffer_numindices           gs_indexbuffer_get_num_indices
      indexbuffer_gettype              gs_indexbuffer_get_type
      texture_rebind_iosurface         gs_texture_rebind_iosurface
      texture_get_dc                   gs_texture_get_dc
      texture_release_dc               gs_texture_release_dc
      5780f3f1
    • J
      (API Change) media-io: Improve naming consistency · 42a0925c
      jp9000 提交于
      Renamed:                        To:
      -----------------------------------------------------------
      audio_output_blocksize          audio_output_get_block_size
      audio_output_planes             audio_output_get_planes
      audio_output_channels           audio_output_get_channels
      audio_output_samplerate         audio_output_get_sample_rate
      audio_output_getinfo            audio_output_get_info
      audio_output_createline         audio_output_create_line
      video_output_getinfo            video_output_get_info
      video_gettime                   video_output_get_time
      video_getframetime              video_output_get_frame_time
      video_output_width              video_output_get_width
      video_output_height             video_output_get_height
      video_output_framerate          video_output_get_frame_rate
      video_output_num_skipped_frames video_output_get_skipped_frames
      video_output_total_frames       video_output_get_total_frames
      42a0925c
  36. 09 8月, 2014 2 次提交
    • J
      (API Change) Remove obs_graphics() · 41176eef
      jp9000 提交于
      API Removed:
      - graphics_t obs_graphics();
      Replaced With:
      - void obs_enter_graphics();
      - void obs_leave_graphics();
      
      Description:
        obs_graphics() was somewhat of a pointless function.  The only time
      that it was ever necessary was to pass it as a parameter to
      gs_entercontext() followed by a subsequent gs_leavecontext() call after
      that.  So, I felt that it made a bit more sense just to implement
      obs_enter_graphics() and obs_leave_graphics() functions to do the exact
      same thing without having to repeat that code.  There's really no need
      to ever "hold" the graphics pointer, though I suppose that could change
      in the future so having a similar function come back isn't out of the
      question.
      
      Still, this at least reduces the amount of unnecessary repeated code for
      the time being.
      41176eef
    • J
      (API Change) Rename 'source_frame' + related · 4122a5b9
      jp9000 提交于
      For the sake of naming consistency with the rest of obs.h, prefix this
      structure and associated functions with obs_.
      
      Renamed structures:
      - struct source_frame (now obs_source_frame)
      
      Renamed functions:
      - source_frame_init (now obs_source_frame_init)
      - source_frame_free (now obs_source_frame_free)
      - source_frame_create (now obs_source_frame_create)
      - source_frame_destroy (now obs_source_frame_destroy)
      
      Affected functions:
      - obs_source_output_video
      - obs_source_get_frame
      - obs_source_release_frame
      4122a5b9
  37. 26 6月, 2014 1 次提交
    • J
      Remove 'effect' param from effect param funcs · dbb9124b
      jp9000 提交于
      Similar to the shader functions, the effect parameter functions take
      the effect as a parameter.  However, the effect parameter is pretty
      pointless, because the effect parameter.. parameter stores the effect
      pointer interally.
      dbb9124b