1. 23 May, 2013 1 commit
    • Gwenole Beauchesne's avatar
      libs: drop GST_VAAPI_IS_xxx() helper macros. · 67eea920
      Gwenole Beauchesne authored
      Drop obsolete GST_VAAPI_IS_xxx() helper macros since we are no longer
      deriving from GObject and so those were only checking for whether the
      argument was NULL or not. This is now irrelevant, and even confusing
      to some extent, because we no longer have type checking.
      
      Note: this incurs more type checking (review) but the libgstvaapi is
      rather small, so this is manageable.
      67eea920
  2. 07 May, 2013 4 commits
  3. 25 Apr, 2013 2 commits
    • Gwenole Beauchesne's avatar
      decoder: fix raw decoding mode. · 5ea1a675
      Gwenole Beauchesne authored
      Fix gst_vaapi_decoder_get_surface() to actually transfer ownership of the
      surface proxy to the caller.
      5ea1a675
    • Gwenole Beauchesne's avatar
      decoder: add gst_vaapi_decoder_get_frame_with_timeout(). · c43a2d49
      Gwenole Beauchesne authored
      Add gst_vaapi_decoder_get_frame_with_timeout() helper function that will
      wait for a frame to be decoded, until the specified timeout in microseconds,
      prior to returning to the caller.
      
      This is a fix to performance regression from 851cc0, whereby the vaapidecode
      loop executed on the srcpad task was called to often, thus starving all CPU
      resources.
      c43a2d49
  4. 17 Apr, 2013 1 commit
  5. 16 Apr, 2013 3 commits
  6. 15 Apr, 2013 2 commits
    • Gwenole Beauchesne's avatar
      decoder: fix gst_vaapi_decoder_get_codec_state(). · 8cce65c6
      Gwenole Beauchesne authored
      Fix previous commit whereby gst_vaapi_decoder_get_codec_state() was
      supposed to make GstVaapiDecoder own the return GstVideoCodecState
      object. Only comment was updated, not the actual code.
      8cce65c6
    • Gwenole Beauchesne's avatar
      decoder: make gst_vaapi_decoder_get_codec_state() return the original state. · 1790823e
      Gwenole Beauchesne authored
      Make gst_vaapi_decoder_get_codec_state() return the original codec state,
      i.e. make the GstVaapiDecoder object own the return state so that callers
      that want an extra reference to it would just gst_video_codec_state_ref()
      it before usage. This aligns the behaviour with what we had before with
      gst_vaapi_decoder_get_caps().
      
      This is an ABI incompatible change, library major version was bumped from
      previous release (0.5.2).
      1790823e
  7. 10 Apr, 2013 2 commits
  8. 03 Apr, 2013 1 commit
  9. 21 Mar, 2013 1 commit
    • Gwenole Beauchesne's avatar
      decoder: sanitize codec-data decoding. · 4009430b
      Gwenole Beauchesne authored
      Add a new GstVaapiDecoder::decode_codec_data() hook to actually decode
      codec-data in the decoder sub-class. Provide a common shared helper
      function to do the actual work and delegating further to the sub-class.
      4009430b
  10. 30 Jan, 2013 2 commits
    • Gwenole Beauchesne's avatar
      decoder: handle decode-only frames in raw API mode. · 4499f392
      Gwenole Beauchesne authored
      Fix gst_vaapi_decoder_get_surface() to only return frames with a valid
      surface proxy, i.e. with a valid VA surface. This means that any frame
      marked as decode-only is simply skipped.
      4499f392
    • Gwenole Beauchesne's avatar
      decoder: allow frames to be dropped. · 2305b0db
      Gwenole Beauchesne authored
      If the decoder was not able to decode a frame because insufficient
      information was available, e.g. missing sequence or picture header,
      then allow the frame to be gracefully dropped without generating
      any error.
      
      It is also possible that a frame is not meant to be displayed but
      only used as a reference, so dropping that frame is also a valid
      operation since GstVideoDecoder base class has extra references to
      that GstVideoCodecFrame that needs to be released.
      2305b0db
  11. 29 Jan, 2013 2 commits
  12. 18 Jan, 2013 2 commits
  13. 17 Jan, 2013 3 commits
  14. 07 Jan, 2013 3 commits
  15. 03 Jan, 2013 2 commits
    • Gwenole Beauchesne's avatar
      decoder: create new context when encoded resolution changes. · 9bba1e5f
      Gwenole Beauchesne authored
      Create a new VA context if the encoded surface size changes because we
      need to keep the underlying surface pool until the last one was released.
      Otherwise, either of the following cases could have happened: (i) release
      a VA surface to an inexistent pool, or (ii) release VA surface to an
      existing surface pool, but with different size.
      9bba1e5f
    • Gwenole Beauchesne's avatar
      decoder: introduce lists of units to decode before/after frame. · 63a7e424
      Gwenole Beauchesne authored
      Theory of operations: all units marked as "slice" are moved to the "units"
      list. Since this list only contains slice data units, the prev_slice pointer
      was removed. Besides, we now maintain two extra lists of units to be decoded
      before or after slice data units.
      
      In particular, all units in the "pre_units" list will be decoded before
      GstVaapiDecoder::start_frame() is called and units in the "post_units"
      list will be decoded after GstVaapiDecoder::end_frame() is called.
      63a7e424
  16. 18 Dec, 2012 9 commits
    • Gwenole Beauchesne's avatar
      decoder: maintain decoded frames as GstVideoCodecFrame objects. · 8c2d9bcd
      Gwenole Beauchesne authored
      Maintain decoded surfaces as GstVideoCodecFrame objects instead of
      GstVaapiSurfaceProxy objects. The latter will tend to be reduced to
      the strict minimum: a context and a surface.
      8c2d9bcd
    • Gwenole Beauchesne's avatar
      decoder: add gst_vaapi_decoder_get_frame() API. · 09c9e203
      Gwenole Beauchesne authored
      Add new gst_vaapi_decoder_get_frame() function meant to be used with
      gst_vaapi_decoder_decode(). The purpose is to return the next decoded
      frame as a GstVideoCodecFrame and the associated GstVaapiSurfaceProxy
      as the user-data object.
      09c9e203
    • Sreerenj Balachandran's avatar
      decoder: use GstVideoCodecState. · e7e5c74a
      Sreerenj Balachandran authored
      Use standard GstVideoCodecState throughout GstVaapiDecoder and expose
      it with a new gst_vaapi_decoder_get_codec_state() function. This makes
      it possible to drop picture size (width, height) information, framerate
      (fps_n, fps_d) information, pixel aspect ratio (par_n, par_d) information,
      and interlace mode (is_interlaced field).
      
      This is a new API with backwards compatibility maintained. In particular,
      gst_vaapi_decoder_get_caps() is still available.
      Signed-off-by: default avatarSreerenj Balachandran <sreerenj.balachandran@intel.com>
      Signed-off-by: default avatarGwenole Beauchesne <gwenole.beauchesne@intel.com>
      e7e5c74a
    • Gwenole Beauchesne's avatar
      decoder: update gst_vaapi_decoder_get_surface() semantics. · 14a6e0f6
      Gwenole Beauchesne authored
      Align gst_vaapi_decoder_get_surface() semantics with the rest of the
      API. That is, return a GstVaapiDecoderStatus and the decoded surface
      as a handle to GstVaapiSurfaceProxy in parameter.
      
      This is an API/ABI change.
      14a6e0f6
    • Gwenole Beauchesne's avatar
      decoder: use standard helper functions. · 798e84bd
      Gwenole Beauchesne authored
      Use g_clear_object(), gst_buffer_replace() and gst_caps_replace()
      whenever necessary.
      798e84bd
    • Gwenole Beauchesne's avatar
      decoder: expose new parse/decode API. · 6bed9ebe
      Gwenole Beauchesne authored
      Introduce new decoding process whereby a GstVideoCodecFrame is created
      first. Next, input stream buffers are accumulated into a GstAdapter,
      that is then passed to the _parse() function. The GstVaapiDecoder object
      accumulates all parsed units and when a complete frame or field is
      detected, that GstVideoCodecFrame is passed to the _decode() function.
      
      Ultimately, the caller receives a GstVaapiSurfaceProxy if decoding
      process was successful.
      6bed9ebe
    • Gwenole Beauchesne's avatar
      decoder: add {start,end}_frame() hooks. · ea970336
      Gwenole Beauchesne authored
      The start_frame() hook is called prior to traversing all decode-units
      for decoding. The unit argument represents the first slice in the frame.
      Some codecs (e.g. H.264) need to wait for the first slice in order to
      determine the actual VA context parameters.
      ea970336
    • Gwenole Beauchesne's avatar
      decoder: add new GstVaapiDecoder API. · 66cc8754
      Gwenole Beauchesne authored
      Split decoding process into two steps: (i) parse incoming bitstreams
      into simple decoder-units until the frame or field is complete; and
      (ii) decode the whole frame or field at once.
      
      This is an ABI change.
      66cc8754
    • Gwenole Beauchesne's avatar
      surfaceproxy: port to GstVaapiMiniObject. · 1130a468
      Gwenole Beauchesne authored
      GstVaapiSurfaceProxy does not use any particular functionality from
      GObject. Actually, it only needs a basic object type with reference
      counting.
      
      This is an API and ABI change.
      1130a468