Wind Yuan [Wed, 14 Mar 2012 00:33:41 +0000 (20:33 -0400)]
mpeg2: fix GOP timestamps when incorrect data is received.
Some streams have incorrect GOP timestamps, or nothing set at all.
i.e. GOP time is 00:00:00 for all GOPs. Try to recover in this case
from demuxer timestamps, which are monotonic.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Wind Yuan [Tue, 13 Mar 2012 06:03:31 +0000 (02:03 -0400)]
mpeg2: don't decode anything before the first sequence_header().
Skip all pictures prior to the first sequence_header(). Besides,
skip all picture_data() if there was no prior picture_header().
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Holger Kaelberer [Tue, 7 Feb 2012 14:57:14 +0000 (15:57 +0100)]
ffmpeg: add support for interlaced streams.
Evaluate interlaced stream properties.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Holger Kaelberer [Tue, 7 Feb 2012 14:54:15 +0000 (15:54 +0100)]
vaapidecode: propagate interlaced and TFF properties downstream.
Propagate "interlaced" caps downstream and set "tff" buffer flag
appropriately to output buffers for interlaced pictures.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Holger Kaelberer [Tue, 7 Feb 2012 14:54:15 +0000 (15:54 +0100)]
decoder: maintain caps for interlaced streams.
Extend GstVaapiDecoder base object to maintain caps with "interlaced"
property.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Holger Kaelberer [Tue, 7 Feb 2012 14:54:15 +0000 (15:54 +0100)]
surfaceproxy: add TFF property.
Add TFF (top-field-first) property to GstVaapiSurfaceProxy.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Fri, 16 Mar 2012 13:21:36 +0000 (14:21 +0100)]
AUTHORS: update to match current authors.
Gwenole Beauchesne [Tue, 28 Feb 2012 10:58:21 +0000 (11:58 +0100)]
mpeg2: fix is_first_field calculation.
Reset is_first_field for frame pictures. Factor out locations where
the flag is updated.
Gwenole Beauchesne [Fri, 24 Feb 2012 11:56:48 +0000 (12:56 +0100)]
mpeg2: catch incorrect picture_structure from bitstreams.
Assume "frame" picture structure if the syntax element was zero or if
progressive_frame is set.
Gwenole Beauchesne [Fri, 24 Feb 2012 11:53:30 +0000 (12:53 +0100)]
mpeg2: fix slice_vertical_position calculation (again).
VA-API expects slice_vertical_position as the initial position from the
bitstream. i.e. the direct slice() information. VA drivers will be fixed
accordingly.
Gwenole Beauchesne [Fri, 2 Mar 2012 14:03:57 +0000 (15:03 +0100)]
Revert "vaapidecode: fix another pad template ref leak" (Holger Kaelberer)
This reverts commit
2f127d6af473afd647a2c88f75faafd1cd718437.
For gst_element_class_get_pad_template(), no unreferencing is necessary
according to the GStreamer documentation.
Gwenole Beauchesne [Fri, 2 Mar 2012 12:41:16 +0000 (13:41 +0100)]
h264: fix slice_data_bit_offset calculation.
Unlike what VA-API documentation defines, the slice_data_bit_offset
represents the offset to the first macroblock in the slice data, minus
any emulation prevention bytes in the slice_header().
This fix copes with binary-only VA drivers that won't be fixed any
time soon. Besides, this aligns with the current FFmpeg behaviour
that was based on those proprietary drivers implementing the API
incorrectly.
Wind Yuan [Tue, 21 Feb 2012 07:11:20 +0000 (02:11 -0500)]
h264: skip all Access Unit (AU) NALs.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Wind Yuan [Wed, 29 Feb 2012 08:08:46 +0000 (03:08 -0500)]
h264: fix modification process of reference picture lists.
Construction of RefPicList0/1 could be off by one element.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Sreerenj Balachandran [Sun, 12 Feb 2012 09:21:52 +0000 (11:21 +0200)]
mpeg2: fix size calculation from sequence_extension().
Original values from sequence_header() are 12-bit and the remaining
2 most significant bits are coming from sequence_extension().
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Thu, 23 Feb 2012 15:39:14 +0000 (16:39 +0100)]
mpeg2: fix slice_vertical_position calculation.
Make sure to adjust slice_vertical_position if picture structure
is a top or bottom field.
Gwenole Beauchesne [Thu, 23 Feb 2012 15:23:27 +0000 (16:23 +0100)]
decoder: add picture structure flags.
Gwenole Beauchesne [Thu, 23 Feb 2012 13:42:38 +0000 (14:42 +0100)]
mpeg2: fix decoding at end-of-sequence.
Gwenole Beauchesne [Thu, 23 Feb 2012 13:17:34 +0000 (14:17 +0100)]
mpeg2: fix slice_horizontal_position calculation.
Gwenole Beauchesne [Thu, 23 Feb 2012 15:14:02 +0000 (16:14 +0100)]
mpeg2: drop useless mb_y and mb_height members.
Gwenole Beauchesne [Thu, 23 Feb 2012 10:19:48 +0000 (11:19 +0100)]
mpeg2: fix decoding of multiple slices with same slice_vertical_position.
6.3.15 says that "some slices may have the same slice_vertical_position,
since slices may start and finish anywhere". So, we can't submit the current
picture to the HW right away since subsequent slices would be missing.
Gwenole Beauchesne [Wed, 15 Feb 2012 13:08:44 +0000 (14:08 +0100)]
image: fix source stride in picture copy.
Gwenole Beauchesne [Mon, 13 Feb 2012 09:10:35 +0000 (10:10 +0100)]
decoder: fix double buffer free with some VA drivers.
vaRenderPicture() implicitly disposes VA buffers. Some VA drivers would
push the VA buffer object into a list of free buffers to be re-used. However,
reference pictures (and data) that was kept would explicitly release the VA
buffer object later on, thus possibly destroying a valid (re-used) object.
Besides, some other VA drivers don't support correctly the vaRenderPicture()
semantics for VA buffers disposal and would leak memory if there is no explicit
vaDestroyBuffer(). The temporary workaround is to explcitily destroy VA buffers
right after vaRenderPicture(). All VA drivers need to be aligned.
Gwenole Beauchesne [Wed, 8 Feb 2012 17:08:49 +0000 (18:08 +0100)]
h264: complete any current picture decoder before SPS / PPS change.
This ensures the VA context is clear when the encoded resolution
changes. i.e. make sure older picture is decoded with the older
VA context before it changes.
Gwenole Beauchesne [Wed, 8 Feb 2012 17:07:14 +0000 (18:07 +0100)]
h264: create VA context earlier when SPS is parsed.
Gwenole Beauchesne [Wed, 8 Feb 2012 16:57:29 +0000 (17:57 +0100)]
h264: don't allocate too big data structures on stack.
Gwenole Beauchesne [Tue, 7 Feb 2012 10:07:15 +0000 (11:07 +0100)]
glib: map deprecated API to glib >= 2.32 equivalents.
GStaticMutex and GStaticRecMutex are now replaced with GMutex and
GRecMutex, which no longer require any prior call to g_thread_init().
Gwenole Beauchesne [Tue, 7 Feb 2012 09:01:01 +0000 (10:01 +0100)]
glib: fix includes.
Gwenole Beauchesne [Tue, 7 Feb 2012 09:05:53 +0000 (10:05 +0100)]
cosmetics: fix warnings (drop unused variables).
Gwenole Beauchesne [Mon, 6 Feb 2012 15:11:38 +0000 (16:11 +0100)]
vaapidecode: fix another pad template ref leak.
Gwenole Beauchesne [Mon, 6 Feb 2012 14:54:09 +0000 (15:54 +0100)]
mpeg2: fix crash when there is no free surface to decode into.
Zhao Halley [Tue, 31 Jan 2012 08:38:58 +0000 (16:38 +0800)]
display: skip profiles which have no entrypoints.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Sun, 5 Feb 2012 17:28:51 +0000 (18:28 +0100)]
vaapiupload: use g_object_unref() for GstVaapiImage.
Gwenole Beauchesne [Sun, 5 Feb 2012 17:24:08 +0000 (18:24 +0100)]
plugins: fix pad template ref leaks.
Gwenole Beauchesne [Thu, 2 Feb 2012 08:23:15 +0000 (09:23 +0100)]
Bump version for development.
Gwenole Beauchesne [Wed, 1 Feb 2012 22:34:09 +0000 (23:34 +0100)]
0.3.4.
Gwenole Beauchesne [Wed, 1 Feb 2012 22:32:47 +0000 (23:32 +0100)]
README: updates.
Mention codecparsers-based decoders, FFmpeg is now optional. Update
list of support HW.
Gwenole Beauchesne [Wed, 1 Feb 2012 22:28:23 +0000 (23:28 +0100)]
NEWS: updates.
Gwenole Beauchesne [Tue, 31 Jan 2012 10:34:17 +0000 (11:34 +0100)]
decoder: allocate proxy surface earlier.
This simplifies gst_vaapi_picture_output() to only update the presentation
timestamp and submit the proxy to the decoder for output.
Gwenole Beauchesne [Tue, 31 Jan 2012 10:26:37 +0000 (11:26 +0100)]
decoder: fix memory leak of VA objects on exit.
On sequence end, if the last decoded picture is not output for rendering,
then the proxy surface is not created. In this case, the original surface
must be released explicitly to the context.
Gwenole Beauchesne [Tue, 31 Jan 2012 09:47:36 +0000 (10:47 +0100)]
mpeg2: use GstAdapter to track input sequence.
This fixes possible memory leaks and improves performance by removing
some extra copies.
Gwenole Beauchesne [Mon, 30 Jan 2012 17:25:03 +0000 (18:25 +0100)]
Add glib compatibility glue for older versions.
Gwenole Beauchesne [Mon, 30 Jan 2012 17:12:59 +0000 (18:12 +0100)]
Add header for system-dependent definitions.
Gwenole Beauchesne [Mon, 30 Jan 2012 09:15:32 +0000 (10:15 +0100)]
decoder: optimize slice data buffers initialization.
VA drivers may have a faster means to transfer user buffers to GPU
buffers than using memcpy(). In particular, on Intel Gen graphics, we
can use pwrite(). This provides for faster upload of bitstream and can
help higher bitrates.
vaapi_create_buffer() helper function was also updated to allow for
un-mapped buffers and pre-initialized data for buffers.
Gwenole Beauchesne [Fri, 27 Jan 2012 16:28:50 +0000 (17:28 +0100)]
h264: simplify RefPicList reconstruction.
Gwenole Beauchesne [Fri, 27 Jan 2012 15:08:03 +0000 (16:08 +0100)]
h264: flush DPB when the end of the sequence is reached.
Gwenole Beauchesne [Tue, 24 Jan 2012 14:38:14 +0000 (15:38 +0100)]
h264: handle Decoded Picture Buffer (DPB).
Gwenole Beauchesne [Tue, 24 Jan 2012 08:20:25 +0000 (09:20 +0100)]
h264: fix pred_weight_table() reconstruction.
Only the explicit pred_weight_table(), possibly with the inferred default
values, shall be required. e.g. don't fill in the table if weighted_pred_flag
is not set for P/SP slices.
Gwenole Beauchesne [Mon, 23 Jan 2012 14:03:07 +0000 (15:03 +0100)]
h264: execute reference picture marking process (MMCO).
Gwenole Beauchesne [Mon, 23 Jan 2012 14:20:51 +0000 (15:20 +0100)]
h264: fix presentation timestamps.
Gwenole Beauchesne [Wed, 18 Jan 2012 12:38:34 +0000 (13:38 +0100)]
h264: execute reference picture marking process (sliding window).
Gwenole Beauchesne [Tue, 17 Jan 2012 09:42:49 +0000 (10:42 +0100)]
h264: handle avcC format for decoding buffers.
Sreerenj Balachandran [Fri, 25 Nov 2011 12:37:00 +0000 (14:37 +0200)]
h264: handle codec-data.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Fri, 12 Aug 2011 15:43:55 +0000 (17:43 +0200)]
Add initial H.264 decoder.
Gwenole Beauchesne [Thu, 26 Jan 2012 14:28:42 +0000 (15:28 +0100)]
decoder: retain proxy surface until the GstVaapiPicture is destroyed.
Keep a valid reference to the proxy in GstVaapiPicture so that frames
marked as "used for reference" could be kept during the lifetime of the
picture. i.e. don't release them too soon as they could be re-used right
away.
Gwenole Beauchesne [Thu, 26 Jan 2012 14:19:14 +0000 (15:19 +0100)]
decoder: properly reference count pictures.
This fixes cases where a GstVaapiPicture would be destroyed whereas
there is still a valid instance of it in either prev, current or
next picture.
Gwenole Beauchesne [Thu, 26 Jan 2012 13:54:31 +0000 (14:54 +0100)]
decoder: simplify output of decoded frames.
Drop obsolete gst_vaapi_decoder_push_surface() that was no longer used.
Change gst_vaapi_decoder_push_surface_proxy() semantics to assume PTS
is already set correctly and reference count increased, if necessary.
Gwenole Beauchesne [Thu, 26 Jan 2012 08:48:11 +0000 (09:48 +0100)]
decoder: rework the internal VA objects API.
The new API simplifies a lot reference counting and makes it more
flexible for future additions/changes. The GstVaapiCodecInfo is
also gone. Rather, new helper macros are provided to allocate
picture, slice and quantization matrix parameter buffers.
Gwenole Beauchesne [Tue, 24 Jan 2012 09:21:45 +0000 (10:21 +0100)]
decoder: allow slices to be attached to pictures later.
Gwenole Beauchesne [Mon, 21 Nov 2011 17:39:49 +0000 (18:39 +0100)]
decoder: add ref_count to GstVaapiPicture.
Gwenole Beauchesne [Mon, 23 Jan 2012 10:48:42 +0000 (11:48 +0100)]
vaapisink: cap window size to the maximum display size.
Zhao Halley [Wed, 18 Jan 2012 09:23:41 +0000 (10:23 +0100)]
profile: match video/x-h263 as H.263 Baseline profile.
HACK: qtdemux does not report profiles for H.263. So, assume plain
"video/x-h263" is H.263 Baseline profile.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Wed, 18 Jan 2012 09:22:58 +0000 (10:22 +0100)]
display: report H.263 Baseline profile.
HACK: expose GST_VAAPI_PROFILE_H263_BASELINE for decoding if MPEG-4:2 Simple
profile (VAProfileMPEG4Simple) is supported.
Gwenole Beauchesne [Tue, 24 Jan 2012 09:06:37 +0000 (10:06 +0100)]
Add template for workarounds.
Gwenole Beauchesne [Wed, 18 Jan 2012 09:47:56 +0000 (10:47 +0100)]
tests: error out if FFmpeg|codecparsers are not supported.
Gwenole Beauchesne [Wed, 18 Jan 2012 09:42:38 +0000 (10:42 +0100)]
surface: don't expose gst_vaapi_surface_get_parent_context().
gst_vaapi_surface_get_parent_context() was not meant to be exposed globally.
It's just an internal helper function. However, it's still possible to get
the parent context through the "parent-context" property.
Gwenole Beauchesne [Mon, 16 Jan 2012 13:19:00 +0000 (14:19 +0100)]
tests: fix build without FFmpeg.
Gwenole Beauchesne [Mon, 16 Jan 2012 13:09:57 +0000 (14:09 +0100)]
Bump version for development.
Gwenole Beauchesne [Mon, 16 Jan 2012 10:05:31 +0000 (11:05 +0100)]
0.3.3.
Gwenole Beauchesne [Mon, 16 Jan 2012 10:03:51 +0000 (11:03 +0100)]
legal: fix year for some copyright notices.
Gwenole Beauchesne [Mon, 16 Jan 2012 09:42:55 +0000 (10:42 +0100)]
legal: add Intel copyright on modified files.
Gwenole Beauchesne [Mon, 16 Jan 2012 09:41:10 +0000 (10:41 +0100)]
legal: fix copyright notices to include "Copyright" term.
Zhao Halley [Fri, 9 Dec 2011 08:44:03 +0000 (16:44 +0800)]
mpeg4: replace GstVaapiTSB with GstAdapter (gst-plugins-base >= 0.10.24).
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Zhao Halley [Fri, 9 Dec 2011 08:28:11 +0000 (16:28 +0800)]
Add initial MPEG-4 decoder.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Sreerenj Balachandran [Fri, 18 Nov 2011 13:41:40 +0000 (15:41 +0200)]
vc1: replace GstVaapiTSB with GstAdapter (gst-plugins-base >= 0.10.24).
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Fri, 7 Oct 2011 09:50:20 +0000 (11:50 +0200)]
vc1: fix codec-data decoding for WMV3 format.
Gwenole Beauchesne [Fri, 7 Oct 2011 09:12:33 +0000 (11:12 +0200)]
vc1: fix presentation timestamps.
Gwenole Beauchesne [Thu, 6 Oct 2011 13:59:22 +0000 (15:59 +0200)]
vc1: fix MV mode packing.
Gwenole Beauchesne [Wed, 5 Oct 2011 14:41:57 +0000 (16:41 +0200)]
vc1: handle codec-data.
Gwenole Beauchesne [Wed, 5 Oct 2011 13:56:36 +0000 (15:56 +0200)]
vc1: handle encapsulated bitstreams.
Gwenole Beauchesne [Tue, 4 Oct 2011 15:51:51 +0000 (17:51 +0200)]
vc1: fix bitplanes decoding.
Gwenole Beauchesne [Tue, 4 Oct 2011 12:15:55 +0000 (14:15 +0200)]
vc1: fix BFRACTION reconstruction.
Gwenole Beauchesne [Fri, 30 Sep 2011 15:16:23 +0000 (17:16 +0200)]
vc1: fix framerate calculation.
Gwenole Beauchesne [Fri, 30 Sep 2011 11:40:11 +0000 (13:40 +0200)]
Add initial VC-1 decoder.
Zhao Halley [Mon, 9 Jan 2012 16:37:34 +0000 (17:37 +0100)]
mpeg2: fix first field detection.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Fri, 6 Jan 2012 15:44:09 +0000 (16:44 +0100)]
mpeg2: fix quantisation matrix construction.
Sreerenj Balachandran [Fri, 18 Nov 2011 13:06:07 +0000 (15:06 +0200)]
mpeg2: replace GstVaapiTSB API with GstAdapter (gst-plugins-base >= 0.10.24).
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Wed, 14 Sep 2011 16:11:57 +0000 (18:11 +0200)]
mpeg2: fix packets spanning over two buffers.
Gwenole Beauchesne [Mon, 12 Sep 2011 16:20:00 +0000 (18:20 +0200)]
mpeg2: ignore system start codes (PES headers).
Gwenole Beauchesne [Mon, 12 Sep 2011 16:02:53 +0000 (18:02 +0200)]
mpeg2: handle closed_gop.
Gwenole Beauchesne [Fri, 5 Aug 2011 09:55:11 +0000 (11:55 +0200)]
Add initial MPEG-2 decoder.
Gwenole Beauchesne [Fri, 12 Aug 2011 08:21:19 +0000 (10:21 +0200)]
Allow conditional build of GStreamer/FFmpeg bitstream parsers.
Gwenole Beauchesne [Fri, 5 Aug 2011 09:53:50 +0000 (11:53 +0200)]
Add VA decoder helpers.
Gwenole Beauchesne [Fri, 5 Aug 2011 09:52:43 +0000 (11:52 +0200)]
decoder: add new error codes.
GST_VAAPI_DECODER_STATUS_ERROR_UNSUPPORTED_PROFILE: for unsupported profile
GST_VAAPI_DECODER_STATUS_ERROR_UNSUPPORTED_CHROMA_FORMAT: for unsupported chroma format
Gwenole Beauchesne [Mon, 12 Sep 2011 11:00:59 +0000 (13:00 +0200)]
Add timestamp buffer store helper utils.
Gwenole Beauchesne [Thu, 4 Aug 2011 15:29:41 +0000 (17:29 +0200)]
Add VA buffer helpers.
Gwenole Beauchesne [Fri, 13 Jan 2012 14:03:38 +0000 (15:03 +0100)]
utils: slight improvements to gl_bind_texture().
Gwenole Beauchesne [Fri, 13 Jan 2012 13:13:55 +0000 (14:13 +0100)]
utils: pretty-print output of gl_get_error_string().
Gwenole Beauchesne [Fri, 13 Jan 2012 13:03:29 +0000 (14:03 +0100)]
utils: rewrite gl_perspective() as per OpenGL FAQ 9.085.
Gwenole Beauchesne [Fri, 13 Jan 2012 11:09:07 +0000 (12:09 +0100)]
utils: simplify string of VAProfile/VAEntrypoint.