Gwenole Beauchesne
99932049e4
mpeg2: fix simple to main profile fallback.
...
Allow fallback from simple to main profile when the HW decoder does
not support the former profile and that no sequence_header_extension()
is available to point out this.
2012-04-02 11:36:56 +02:00
Wind Yuan
b33dd69300
mpeg4: improve error checking while decoding packets.
...
decode_picture() could return an error when an MPEG-4 profile is not
supported for example. In this case, the underlying VA context is not
allocated and no other proper action can be taken. Likewise on exit
from decode_slice().
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-03-30 17:23:38 +02:00
Gwenole Beauchesne
75538bbc9b
decoder: use POC to maintain the DPB.
...
Introduce a POC field in GstVaapiPicture so that to store simpler sequential
numbers. A signed 32-bit integer should be enough for 1 year of continuous
video streaming at 60 Hz.
Use this new POC value to maintain the DPB, instead of 64-bit timestamps.
This also aligns with H.264 that will be migrated to GstVaapiDpb infrastructure.
2012-03-30 17:08:37 +02:00
Gwenole Beauchesne
d51bb87482
mpeg2: rework generation of presentation timestamps.
...
Always prefer PTS from the demuxer layer for GOP times. If this is invalid,
i.e. demuxer could not determine the PTS or the generated PTS is lower than
max PTS from past pictures, then try to fix it up based on the duration of
a frame.
For picture PTS, simply use the GOP PTS formerly computed then use TSN to
reconstruct a current time. Also now handle wrapped TSN correctly.
2012-03-30 17:08:37 +02:00
Gwenole Beauchesne
6eeb20a953
mpeg2: ignore empty user-data packets.
...
Fix tcela-8.bits conformance test.
2012-03-30 17:08:37 +02:00
Gwenole Beauchesne
7af40475d5
mpeg2: review and report errors accordingly.
...
Use GST_ERROR() to report real errors instead of hiding them into
GST_DEBUG().
2012-03-29 11:13:20 +02:00
Gwenole Beauchesne
b003a2bab2
mpeg2: fix invalid interlaced frame in progressive sequence.
...
Some streams, badly constructed, could have signaled an interlaced
frame while the sequence was meant to be progressive. Warn and force
frame to be progressive in this case.
2012-03-28 19:41:28 +02:00
Gwenole Beauchesne
7a9410f826
mpeg2: add support for interlaced streams.
...
Pictures are submitted to the HW for rendering only when both fields
are decoded or current picture is a full frame.
2012-03-28 19:40:27 +02:00
Gwenole Beauchesne
ac4fc0d36c
mpeg2: add new decoded picture buffer infrastructure.
...
Decoded pictures are now maintained into DPB, similarly to H.264.
The same mechanism could be re-used for VC-1 and MPEG-4:2 codecs.
2012-03-28 19:36:52 +02:00
Gwenole Beauchesne
b56ac16224
decoder: add first-field flag to picture.
...
Add first-field (FF) flag to GstVaapiPicture, thus not requiring is_first_field
member in each decoder. Rather, when a GstVaapiPicture is created, it is considered
as the first field. Any subsequent allocated field will become the second field.
2012-03-28 19:25:49 +02:00
Gwenole Beauchesne
195a61fa02
decoder: allow pictures to be cloned for field decoding.
...
Add gst_vaapi_picture_new_field() function that clones a picture, while
preserving the parent picture surface. i.e. the surface proxy reference
count is increased and other fields copied as is. Besides, the picture
is reset into a "non-output" mode.
2012-03-28 18:58:27 +02:00
Gwenole Beauchesne
c27385aa8d
decoder: rework picture field flags.
...
Add top-field-first (TFF) and interlaced flags to GstVaapiPicture so they
could be propagated to the surface proxy when it is pushed for rendering.
Besides, top and bottom fields are now expressed with picture structure flags
from GstVaapiSurfaceRenderFlags.
2012-03-28 18:24:39 +02:00
Gwenole Beauchesne
e8756ae427
decoder: add OUTPUT flag to pictures.
...
Allow pictures to be marked as output gst_vaapi_picture_output().
2012-03-28 17:59:19 +02:00
Gwenole Beauchesne
a7ec623279
decoder: fix semantics of SKIPPED pictures.
...
If GstVaapiPicture has flag SKIPPED set, this means gst_vaapi_picture_output()
will not push the underlying surface for rendering. Besides, VC-1 skipped P-frame
has nothing to do with rendering. This only means that the currently decoded
picture is just a copy of its reference picture.
2012-03-28 17:59:19 +02:00
Gwenole Beauchesne
b98d334dce
vaapipostproc: get "interlaced" attribute from surface proxy.
...
Add new "interlaced" attribute to GstVaapiSurfaceProxy. Use this in
vaapipostproc so that to handles cases where bitstream is interlaced
but almost only frame pictures are generated. In this case, we should
not be alternating between top/bottom fields.
2012-03-28 17:59:19 +02:00
Gwenole Beauchesne
a5144358d1
videobuffer: add surface render flags.
...
Allow rendering flags, as a combination of GstVaapiSurfaceRenderFlags,
to be set to the video buffer. In particular, this is mostly useful for
basic deinterlacing.
2012-03-26 12:01:36 +02:00
Gwenole Beauchesne
3b67533d3d
compat: add compatibility glue with VA-API 0.34+ (WIP).
2012-03-23 17:13:58 +01:00
Gwenole Beauchesne
7277f0e220
h264: skip all Filler Data NALs.
2012-03-23 17:11:18 +01:00
Wind Yuan
81ab8dad37
mpeg4: check for decoder status prior to decoding packet.
...
Make sure there is a VA surface free prior to decoding the current frame.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-03-22 14:44:42 +01:00
Wind Yuan
baa80d9753
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>
2012-03-22 13:45:47 +01:00
Wind Yuan
fc3edde05c
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>
2012-03-21 17:38:22 +01:00
Holger Kaelberer
2ebfa66ade
ffmpeg: add support for interlaced streams.
...
Evaluate interlaced stream properties.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-03-19 18:43:06 +01:00
Holger Kaelberer
82f11ffb30
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>
2012-03-19 18:43:06 +01:00
Holger Kaelberer
8593fb619c
surfaceproxy: add TFF property.
...
Add TFF (top-field-first) property to GstVaapiSurfaceProxy.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-03-19 18:43:06 +01:00
Gwenole Beauchesne
d6ab5e1210
mpeg2: fix is_first_field calculation.
...
Reset is_first_field for frame pictures. Factor out locations where
the flag is updated.
2012-03-16 13:56:48 +01:00
Gwenole Beauchesne
10dfc67cca
mpeg2: catch incorrect picture_structure from bitstreams.
...
Assume "frame" picture structure if the syntax element was zero or if
progressive_frame is set.
2012-03-16 13:56:26 +01:00
Gwenole Beauchesne
8bbe22f831
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.
2012-03-16 13:55:28 +01:00
Gwenole Beauchesne
63e29adbf5
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.
2012-03-02 13:41:16 +01:00
Wind Yuan
c979d51da6
h264: skip all Access Unit (AU) NALs.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-03-01 10:35:58 +01:00
Wind Yuan
6b56c84c9b
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>
2012-03-01 10:35:58 +01:00
Sreerenj Balachandran
033a675bcc
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>
2012-02-24 11:09:05 +01:00
Gwenole Beauchesne
f1883b4a4e
mpeg2: fix slice_vertical_position calculation.
...
Make sure to adjust slice_vertical_position if picture structure
is a top or bottom field.
2012-02-23 16:41:11 +01:00
Gwenole Beauchesne
124cd8a3d3
decoder: add picture structure flags.
2012-02-23 16:39:51 +01:00
Gwenole Beauchesne
3bc68b5b32
mpeg2: fix decoding at end-of-sequence.
2012-02-23 16:15:23 +01:00
Gwenole Beauchesne
60e515e0b7
mpeg2: fix slice_horizontal_position calculation.
2012-02-23 16:15:22 +01:00
Gwenole Beauchesne
b36d2c810e
mpeg2: drop useless mb_y and mb_height members.
2012-02-23 16:14:02 +01:00
Gwenole Beauchesne
d47031b8ce
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.
2012-02-23 11:19:48 +01:00
Gwenole Beauchesne
de7432f712
image: fix source stride in picture copy.
2012-02-15 14:08:44 +01:00
Gwenole Beauchesne
ab94048ea0
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.
2012-02-13 10:10:35 +01:00
Gwenole Beauchesne
82dbd6f5be
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.
2012-02-08 18:08:49 +01:00
Gwenole Beauchesne
6c5054e840
h264: create VA context earlier when SPS is parsed.
2012-02-08 18:07:14 +01:00
Gwenole Beauchesne
26c105a6ca
h264: don't allocate too big data structures on stack.
2012-02-08 17:57:29 +01:00
Gwenole Beauchesne
830efb3fbd
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().
2012-02-07 11:07:15 +01:00
Gwenole Beauchesne
a698766a8b
glib: fix includes.
2012-02-07 10:06:15 +01:00
Gwenole Beauchesne
5cc357f88a
cosmetics: fix warnings (drop unused variables).
2012-02-07 10:06:15 +01:00
Gwenole Beauchesne
d75d70d395
mpeg2: fix crash when there is no free surface to decode into.
2012-02-06 15:54:42 +01:00
Zhao Halley
d46e8d9961
display: skip profiles which have no entrypoints.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-02-06 12:54:20 +01:00
Gwenole Beauchesne
fe791efc28
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.
2012-01-31 11:34:17 +01:00
Gwenole Beauchesne
399875ee86
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.
2012-01-31 11:29:06 +01:00
Gwenole Beauchesne
11d09495ea
mpeg2: use GstAdapter to track input sequence.
...
This fixes possible memory leaks and improves performance by removing
some extra copies.
2012-01-31 11:02:04 +01:00
Gwenole Beauchesne
b54bf3175c
Add glib compatibility glue for older versions.
2012-01-30 19:53:13 +01:00
Gwenole Beauchesne
0fb1147d9c
Add header for system-dependent definitions.
2012-01-30 19:52:10 +01:00
Gwenole Beauchesne
a79c7f9fa6
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.
2012-01-30 10:32:14 +01:00
Gwenole Beauchesne
5cd0242bbb
h264: simplify RefPicList reconstruction.
2012-01-29 15:27:59 +01:00
Gwenole Beauchesne
d656b958a3
h264: flush DPB when the end of the sequence is reached.
2012-01-29 15:27:59 +01:00
Gwenole Beauchesne
e52ca4a2c8
h264: handle Decoded Picture Buffer (DPB).
2012-01-29 15:27:59 +01:00
Gwenole Beauchesne
425060a7a8
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.
2012-01-29 15:27:59 +01:00
Gwenole Beauchesne
8c37221fa5
h264: execute reference picture marking process (MMCO).
2012-01-29 15:27:59 +01:00
Gwenole Beauchesne
61753fd55a
h264: fix presentation timestamps.
2012-01-29 15:27:59 +01:00
Gwenole Beauchesne
16ccf82363
h264: execute reference picture marking process (sliding window).
2012-01-29 15:27:59 +01:00
Gwenole Beauchesne
5a795b439c
h264: handle avcC format for decoding buffers.
2012-01-29 15:27:59 +01:00
Sreerenj Balachandran
6d61965531
h264: handle codec-data.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-01-29 15:27:59 +01:00
Gwenole Beauchesne
c071f80f40
Add initial H.264 decoder.
2012-01-29 15:27:59 +01:00
Gwenole Beauchesne
4a46b5d6c4
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.
2012-01-27 15:56:32 +01:00
Gwenole Beauchesne
2897618b85
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.
2012-01-27 13:28:12 +01:00
Gwenole Beauchesne
7b19745141
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.
2012-01-27 13:28:12 +01:00
Gwenole Beauchesne
e5d12e8853
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.
2012-01-27 13:28:11 +01:00
Gwenole Beauchesne
dbba1f6107
decoder: allow slices to be attached to pictures later.
2012-01-24 10:21:45 +01:00
Gwenole Beauchesne
74d3680381
decoder: add ref_count to GstVaapiPicture.
2012-01-24 10:15:52 +01:00
Zhao Halley
b963ccb929
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>
2012-01-24 10:15:00 +01:00
Gwenole Beauchesne
c42ba571a8
display: report H.263 Baseline profile.
...
HACK: expose GST_VAAPI_PROFILE_H263_BASELINE for decoding if MPEG-4:2 Simple
profile (VAProfileMPEG4Simple) is supported.
2012-01-24 10:11:59 +01:00
Gwenole Beauchesne
29623239b9
Add template for workarounds.
2012-01-24 10:11:59 +01:00
Gwenole Beauchesne
0f511e1e0b
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.
2012-01-18 10:42:38 +01:00
Gwenole Beauchesne
92f11799d1
legal: fix year for some copyright notices.
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
1594d99d55
legal: add Intel copyright on modified files.
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
14cc1cf061
legal: fix copyright notices to include "Copyright" term.
2012-01-16 11:40:51 +01:00
Zhao Halley
c0d8f2fb1f
mpeg4: replace GstVaapiTSB with GstAdapter (gst-plugins-base >= 0.10.24).
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-01-16 11:40:51 +01:00
Zhao Halley
6502783474
Add initial MPEG-4 decoder.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-01-16 11:40:51 +01:00
Sreerenj Balachandran
c3455e341e
vc1: replace GstVaapiTSB with GstAdapter (gst-plugins-base >= 0.10.24).
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
6ae97634cf
vc1: fix codec-data decoding for WMV3 format.
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
7b1d784197
vc1: fix presentation timestamps.
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
b5ab2e56a9
vc1: fix MV mode packing.
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
a7ccbde2af
vc1: handle codec-data.
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
032486912f
vc1: handle encapsulated bitstreams.
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
5aea02a66f
vc1: fix bitplanes decoding.
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
e686c440c7
vc1: fix BFRACTION reconstruction.
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
a6a1653d92
vc1: fix framerate calculation.
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
b865d4a740
Add initial VC-1 decoder.
2012-01-16 11:40:51 +01:00
Zhao Halley
27fa5903ef
mpeg2: fix first field detection.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-01-16 11:40:51 +01:00
Gwenole Beauchesne
a591dc3b72
mpeg2: fix quantisation matrix construction.
2012-01-16 11:40:50 +01:00
Sreerenj Balachandran
697a2804e1
mpeg2: replace GstVaapiTSB API with GstAdapter (gst-plugins-base >= 0.10.24).
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
ab8f602957
mpeg2: fix packets spanning over two buffers.
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
ce413eb83d
mpeg2: ignore system start codes (PES headers).
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
c5902b7a84
mpeg2: handle closed_gop.
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
49b4702fb6
Add initial MPEG-2 decoder.
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
8f0eda8964
Allow conditional build of GStreamer/FFmpeg bitstream parsers.
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
3360f7f3e3
Add VA decoder helpers.
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
a93c1c076b
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
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
9764e35acb
Add timestamp buffer store helper utils.
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
e0913aaf0e
Add VA buffer helpers.
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
9b9c049a67
utils: slight improvements to gl_bind_texture().
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
30ef6802d6
utils: pretty-print output of gl_get_error_string().
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
a3c9365f15
utils: rewrite gl_perspective() as per OpenGL FAQ 9.085.
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
ba810c2ed6
utils: simplify string of VAProfile/VAEntrypoint.
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
4340372996
utils: drop string_of_FOURCC() in favor of standard GST_FOURCC_* helpers.
2012-01-16 11:40:50 +01:00
Gwenole Beauchesne
674ea91faa
display: always free VA display cache if it is empty.
2012-01-12 16:09:08 +01:00
Gwenole Beauchesne
9516f00f8e
display: use VA display cache for X11 and GLX winsys.
2012-01-12 16:09:08 +01:00
Gwenole Beauchesne
773272475f
display: implement a VA display cache.
2012-01-12 16:09:08 +01:00
Gwenole Beauchesne
420402d593
window: always check geometry when the window is mapped.
2012-01-11 09:38:56 +01:00
Zhao Halley
c40c05e5a4
Add missing profiles from VA-API 0.32.0.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-01-06 17:58:12 +01:00
Gwenole Beauchesne
3e1d235c1a
decoder: fix possible leak of VA surfaces.
...
Under some circumstances, we could have leaked a surface, thus not
releasing it to the pool of available surfaces in the VA context.
The strategy is now to use a proxy earlier and automatically ref/unref
whenever necessary. In particular, during the lifetime needed for FFmpeg.
2012-01-05 17:35:43 +01:00
Gwenole Beauchesne
4e72aa587c
surfaceproxy: add helper to retrieve the VA surface ID.
2012-01-05 17:35:43 +01:00
Gwenole Beauchesne
40f44ab60e
surfaceproxy: simplify destruction.
...
Also make sure to always make sure to release the surface back to the
pool of surfaces in the associated VA context, if any.
2012-01-05 17:35:37 +01:00
Gwenole Beauchesne
0afd2e5c42
context: avoid self reference loops with surfaces.
2012-01-05 14:50:26 +01:00
Gwenole Beauchesne
7f8eaa6cbf
image: add helpers to extract pixels to user buffers.
2012-01-05 10:29:48 +01:00
Gwenole Beauchesne
13f00c67e6
image: simplify initialization of raw images from video buffers.
2012-01-04 11:34:34 +01:00
Gwenole Beauchesne
ad390f3569
image: fix update from NV12 buffers.
2012-01-04 11:32:21 +01:00
Gwenole Beauchesne
ac7c4cfe78
surface: apply composition to the parent context, if requested.
2011-12-14 14:40:37 +01:00
Gwenole Beauchesne
17538a340e
context: make it possible to apply composition globally.
2011-12-14 14:35:13 +01:00
Gwenole Beauchesne
0634dc768d
surface: fix associate subpicture to not report deassociation errors.
2011-12-14 14:13:58 +01:00
Gwenole Beauchesne
bf63fe671f
surface: fix typo in debug message.
2011-12-14 13:46:26 +01:00
Gwenole Beauchesne
3227168487
subpicture: add helper to create subpicture from GstVideoOverlayRectangle.
2011-12-14 13:16:21 +01:00
Gwenole Beauchesne
317c4e639e
surface: record parent context.
2011-12-13 16:53:15 +01:00
Gwenole Beauchesne
9c8c33857f
Fix warnings.
2011-12-13 15:59:02 +01:00
Gwenole Beauchesne
a4244820af
Rename gst_vaapi_surface_update_composition() to
...
gst_vaapi_surface_set_subpictures_from_composition().
2011-12-13 15:51:58 +01:00
Nicolas Dufresne
f6fb267903
converter: add support for GstVideoOverlayComposition planes.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2011-12-12 18:38:51 +01:00
Gwenole Beauchesne
b014567502
surface: use unscaled overlay rectangle for blending.
2011-12-12 18:38:46 +01:00
Gwenole Beauchesne
010f94b85d
surface: fix VA image leak when an error occurred.
2011-12-12 18:37:13 +01:00
Nicolas Dufresne
c997607c6f
surface: add helper to handle GstVideoOverlayComposition.
...
This helper resets the subpictures to reflect the current composition
layers provided with the buffers.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2011-12-12 18:34:57 +01:00
Gwenole Beauchesne
55738da35b
image: add gst_vaapi_image_format_from_video() helper.
2011-12-12 18:32:29 +01:00
Gwenole Beauchesne
efcdec08fb
image: allow updates from GstVaapiImageRaw.
2011-12-12 18:32:29 +01:00
Gwenole Beauchesne
9337fb9a74
image: allow partial updates.
2011-12-12 18:32:29 +01:00
Gwenole Beauchesne
6352c7d5fa
subpicture: fix doc for gst_vaapi_subpicture_set_image().
2011-12-12 18:32:29 +01:00
Gwenole Beauchesne
697b96c30c
display: fix has_image_format() to check against subpicture formats.
2011-12-12 15:09:37 +01:00
Gwenole Beauchesne
e0fc705de3
Drop unused copy of GstBaseVideoDecoder.
2011-12-12 10:04:32 +01:00
Gwenole Beauchesne
e3c6a78da6
decoder: drop unused headers.
2011-12-08 15:16:14 +01:00
Nicolas Dufresne
c5b18c27d5
videobuffer: add GLX buffer support.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2011-12-08 15:13:35 +01:00
Nicolas Dufresne
a6717334f9
Port to GstSurfaceBuffer interface.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2011-12-08 14:58:58 +01:00
Nicolas Dufresne
075374cda3
Change caps to use new video/x-surface generic type.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2011-12-08 14:58:58 +01:00
Nicolas Dufresne
99c5d18f41
Port to GstVideoContext interface.
...
This new interface allows for upstream and downstream display sharing
that works in both static and dynamic pipelines.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2011-12-08 14:58:58 +01:00
Gwenole Beauchesne
f35a7f8fb0
Add new GStreamer version check utilities.
2011-12-07 19:05:50 +01:00
Nicolas Dufresne
e5abbe0440
display: destroy display on creation failure.
...
This allows element to detect that the display creation has actually
failed.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2011-12-07 17:20:55 +01:00
Nicolas Dufresne
8a1dc4978f
display: don't crash when config is empty.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2011-12-07 17:19:42 +01:00
Gwenole Beauchesne
3b9a165037
decoder: fix use of invalid data at the end-of-stream.
2011-10-19 17:33:36 +02:00
Gwenole Beauchesne
bd74adeffa
Cosmetics (sort source files).
2011-09-14 11:40:02 +02:00
Gwenole Beauchesne
857a024c62
Fix gst_vaapi_image_new_with_image().
2011-09-08 14:51:30 +02:00
Gwenole Beauchesne
e00ec1f576
Add gst_vaapi_video_buffer_new_from_buffer().
...
Add helper function to bind a foreign buffer into a GstVaapiVideoBuffer.
Any image, surface or surface proxy will be inherited from the source buffer
if it is a GstVaapiVideoBuffer.
2011-09-06 18:37:11 +02:00
Gwenole Beauchesne
00bb1ca6b4
Add Intel copyright information.
2011-08-01 14:15:39 +02:00
Gwenole Beauchesne
a9a9d72e96
Fix build with newer FFmpeg versions.
2011-07-22 15:56:22 +02:00
Gwenole Beauchesne
2f91c9e8c1
Report caps update only once per video resolution change.
2011-07-22 15:42:26 +02:00
Gwenole Beauchesne
ab6efa04ca
Add canonical form (type name) of VA surface caps.
2011-07-22 15:42:26 +02:00
Gwenole Beauchesne
1701ce3107
Update copyright notice.
2011-06-14 13:54:07 +02:00
Gwenole Beauchesne
b614ec9c9b
Fix licensing terms.
2011-06-14 13:54:03 +02:00
gb
8ee1ffa857
Drop the GLX 1.3 requirement.
2010-09-20 12:55:47 +02:00
gb
982a06b1c7
Call the GLX/Pixmap related functions through the vtable.
2010-09-20 12:55:47 +02:00
gb
fcb65d60f5
Drop dependency on libavformat.
2010-09-20 12:55:47 +02:00
gb
781a7edd57
Add gst_base_video_decoder_update_src_caps().
...
Don't forcibly set "interlaced" field if upstream
elements did not have any.
2010-09-20 12:55:47 +02:00
gb
e708f89b67
Drop superfluous functions.
2010-09-20 12:55:47 +02:00
gb
b5b650c6ee
Really drop any dependency on libgstvideo. i.e. inline the helpers.
2010-09-20 12:55:47 +02:00
gb
7bd568f293
Further drop dependency on libgstvideo.
2010-09-20 12:55:47 +02:00
gb
ca3005055c
Add GstBaseVideoDecoder from gst-plugins-bad git.
2010-09-20 12:55:47 +02:00
gb
d1332bc2e1
Fix GLX version check.
2010-09-20 12:55:47 +02:00
gb
6735dc6b68
Fix decoding of some H.264 streams. e.g. Ice Age 2 trailer.
2010-09-20 12:55:47 +02:00
gb
ade43e8016
Fix build with older VA-API 0.29-sds.
2010-09-20 12:55:47 +02:00
gb
fa6385cd39
Fix decoder caps to report codec aliases.
2010-09-20 12:55:46 +02:00
gb
86d0b2ade9
Regularly update and expose decoder caps.
2010-09-20 12:55:46 +02:00
gb
a777a98f2f
Add mechanism to reinsert buffer leftovers into the queue.
2010-09-20 12:55:46 +02:00
gb
9a3b4a7844
Fix memory leak of encoded buffers.
2010-09-20 12:55:46 +02:00
gb
5e8e268e26
Check for out-of-free-surfaces condition.
2010-09-20 12:55:46 +02:00
gb
0047bb1553
Change GST_VAAPI_DECODER_STATUS_ERROR_UNKNOWN value to something more generic (-1).
2010-09-20 12:55:46 +02:00
gb
0fb0c49dbb
Improve previous fix.
2010-09-20 12:55:46 +02:00
gb
d5df97625e
Fix a crash in the FFmpeg decoder on close.
2010-09-20 12:55:46 +02:00
gb
0e0426582e
Fix OpenGL texture internal format (Clutter).
2010-09-20 12:55:46 +02:00
gb
91c4c2c6b5
Fix comment.
2010-09-20 12:55:45 +02:00
gb
453164d0c5
Add gst_vaapi_display_lookup_downstream() helper.
2010-09-20 12:55:45 +02:00
gb
39dbd70c8f
Expose VA display through GstVaapiVideoBuffer.
2010-09-20 12:55:45 +02:00
gb
6f5e593abd
Expose video pool display.
2010-09-20 12:55:45 +02:00
gb
bceab0254c
Stop iteration if there is no more element to examine.
2010-09-20 12:55:44 +02:00
gb
80e5b1ba17
Factor out VA surface caps.
2010-09-20 12:55:44 +02:00
gb
e739b7a289
Fix docs.
2010-09-20 12:55:44 +02:00
gb
01af005ec2
Really link all helper libraries with libtool -no-undefined.
2010-09-20 12:55:44 +02:00
gb
eec67a5972
Link helper libraries with libtool -no-undefined.
2010-09-20 12:55:44 +02:00
gb
85466028ad
Fix build with older VA-API 0.29.
2010-09-20 12:55:44 +02:00
gb
79c34f823b
Fix doc.
2010-09-20 12:55:44 +02:00
gb
f6314162e0
Rename gst_vaapi_decoder_ffmpeg_new_from_caps() to plain gst_vaapi_decoder_ffmpeg_new().
2010-09-20 12:55:44 +02:00
gb
edae9f068c
Extract framerate information from caps.
2010-09-20 12:55:44 +02:00
gb
2d5434cb0b
Move caps initialization to parent class.
2010-09-20 12:55:43 +02:00
gb
5851086b92
Simplify.
2010-09-20 12:55:43 +02:00
gb
fe35801572
Fix doc.
2010-09-20 12:55:43 +02:00
gb
09552b1559
More simplifications.
2010-09-20 12:55:43 +02:00
gb
73766f9466
Simplify GstVaapiDecoder API.
2010-09-20 12:55:43 +02:00
gb
5128ed9951
Drop obsolete defs.
2010-09-20 12:55:43 +02:00
gb
bcf57bb4f9
Drop obsolete decls.
2010-09-20 12:55:43 +02:00
gb
e39709453e
Add more aliases for MPEG-4 decoding.
2010-09-20 12:55:43 +02:00
gb
1a341a1c02
Use avctx->coded_{width,height} info to create the VA context.
2010-09-20 12:55:43 +02:00
gb
24d918b7a3
Try to improve heuristics to use an AVCodecContextParser.
2010-09-20 12:55:43 +02:00
gb
dbe1d622ef
Fix VC-1 decoding, it does not require any specific parser.
2010-09-20 12:55:43 +02:00
gb
ffb74abe0f
Fix VC-1 detection with older gstreamer libs (no "fourcc" field, but a "format" one).
2010-09-20 12:55:43 +02:00
gb
4285c2cc02
Use size information from the demuxer, whenever available. i.e. fix WMV3 decoding.
2010-09-20 12:55:43 +02:00
gb
477e3b8530
Add gst_vaapi_decoder_ffmpeg_new_from_caps() helper.
2010-09-20 12:55:42 +02:00
gb
fa7505c0c5
Improve WMV3 detection yet further.
2010-09-20 12:55:42 +02:00
gb
64479eb8f2
Fix detection of plain old WMV3 contents.
2010-09-20 12:55:42 +02:00
gb
587b39cdd5
Fix VC-1 detection.
2010-09-20 12:55:42 +02:00
gb
34764d2c2c
Fix build with older gstreamer libs where gst_buffer_unref() is not a plain function.
2010-09-20 12:55:42 +02:00
gb
021d2ab947
Drop obsolete (and wrong) code.
2010-09-20 12:55:42 +02:00
gb
26790878a1
Cosmetics (spelling).
2010-09-20 12:55:42 +02:00
gb
ecff33db03
Try to fix timestamps (step 1). Looks OK on H55.
2010-09-20 12:55:42 +02:00
gb
4754317e70
Relicense gst-libs/ code to LGPL v2.1+.
2010-09-20 12:55:42 +02:00
gb
8d9b365a5b
Drop extraneous comma.
2010-09-20 12:55:42 +02:00
gb
e6b3cfeacd
Drop variant=itu field to help codec detection.
2010-09-20 12:55:42 +02:00
gb
a4d201aaf9
Drop excessive threading that over-complicates synchronisation.
...
MPEG-2 & H.264 videos now play but there are other problems (timestamps).
2010-09-20 12:55:42 +02:00
gb
49f8bad478
Move VA context reset to AVCodecContext.get_context() as the
...
surface sizes can change.
2010-09-20 12:55:41 +02:00
gb
ee000a357b
Fix gst_vaapi_display_has_{decoder,encoder}() to check for the entrypoint too.
2010-09-20 12:55:41 +02:00
gb
1b76d72b98
Add GST_VAAPI_ENTRYPOINT_SLICE_ENCODE.
2010-09-20 12:55:41 +02:00
gb
800faf9ea7
Document H.264 / AVC1 format case better.
2010-09-20 12:55:41 +02:00
gb
fcede672df
Fix H.264 decoding with AVC1 format bitstreams.
2010-09-20 12:55:41 +02:00
gb
f1fc4b52c5
Export gst_vaapi_video_buffer_new().
2010-09-20 12:55:41 +02:00
gb
8c17e2f99d
Fix gst_vaapi_profile_get_caps() to include the "profile" field.
2010-09-20 12:55:41 +02:00
gb
5d1eb8ce89
Add gst_vaapi_decoder_pause().
2010-09-20 12:55:41 +02:00
gb
2356ceb0d9
Use a GstTask with start/stop semantics for the decoder thread.
2010-09-20 12:55:41 +02:00
gb
5f5ed724dd
Drop extraneous var.
2010-09-20 12:55:41 +02:00
gb
a1fddf8bcc
Add support for GstVaapiSurfaceProxy to GstVaapiVideoBuffer.
2010-09-20 12:55:41 +02:00
gb
0596777703
Fix gst_vaapi_decoder_get_surface() status.
2010-09-20 12:55:41 +02:00
gb
bda32435c2
Try to set correct timestamps to the decoded surface proxy.
2010-09-20 12:55:41 +02:00
gb
a14711b935
Add timestamps to GstVaapiSurfaceProxy.
2010-09-20 12:55:41 +02:00
gb
7a3934d01d
Fix GstVaapiDecoder::destroy(): GASyncQueue is not a GObject, likewise for GstBuffer.
2010-09-20 12:55:41 +02:00
gb
6a3b05dbca
Fix destructor, av_parser_close() does destroy the struct already, unliker avcodec_close()...
2010-09-20 12:55:41 +02:00
gb
4350de601b
Prefer profile from codec-data if any was found there.
2010-09-20 12:55:40 +02:00
gb
1f4e67503c
Improve heuristics to find the best profile. Use the highest one if no
...
explicit match on "profile" field.
2010-09-20 12:55:40 +02:00
gb
1c48fa3a23
Make sure gst_vaapi_decoder_get_surface() gets unblocked on error.
2010-09-20 12:55:40 +02:00
gb
1def875b95
Fix VC-1 codec initialization, it really needs an extradata buffer.
2010-09-20 12:55:40 +02:00
gb
61ae27d84c
Split decoder creation with actual resources allocation
...
and codec setup (probe). This fixes a memory leak (avctx, pctx)
on destroy and most interestingly makes it possible to
detect unsupported codecs.
2010-09-20 12:55:40 +02:00
gb
ff193a22b9
Move gst_vaapi_decoder_ffmpeg_create() call to object constructor.
2010-09-20 12:55:37 +02:00
gb
89c094d659
Add "codec-data" property for additional codec data.
...
e.g. VC-1 sequence headers for elementary streams.
2010-09-20 12:55:32 +02:00
gb
664542fe2e
Cosmetics (weird indentation).
2010-09-20 12:55:32 +02:00
gb
42248445f2
Cosmetics (extraneous variable, debug message).
2010-09-20 12:55:32 +02:00
gb
cc28cdbd60
- Add PTS and framerate information.
...
- Simplify parsing with an AVCodeParserContext.
2010-09-20 12:55:32 +02:00
gb
29f1784dd7
Add more error codes. Fix documentation.
2010-09-20 12:55:32 +02:00
gb
eddf6b0d6c
Fix gst_vaapi_profile_get_codec().
...
Improve gst_vaapi_profile_from_caps() for H.264 & caps with "codec-data".
2010-09-20 12:55:32 +02:00
gb
d7e4bca05b
Handle user end-of-streams. Add gst_vaapi_decoder_{start,stop}() helpers.
2010-09-20 12:55:32 +02:00
gb
0d7164c96c
Flush stream only if avcodec_decode_video() read something.
...
Otherwise, we might still have to seek into the stream.
i.e. keep the data longer.
2010-09-20 12:55:32 +02:00
gb
da3948bdeb
Use a recursive mutex so that a single thread can lock
...
several times. This fixes decoding of MPEG-2 and H.264
because those created a GstVaapiContext later through
avcodec_decode_video() that was a protected call.
2010-09-20 12:55:32 +02:00
gb
a203d19a35
Add initial (multithreaded) decoder based on FFmpeg.
...
There are tons of bugs left:
- Decoder API not nice enough with error conditions
- FFmpeg parser is sometimes broken
- Packets queue can be lost
2010-04-23 16:05:58 +00:00
gb
5fb146c298
Add surface proxy that holds a reference to the parent surface
...
and that returns the surface to that context on destruction.
2010-04-23 16:00:50 +00:00
gb
ecf60d2284
Add VA context abstraction.
2010-04-23 15:59:31 +00:00
gb
6cb6c387e9
Fix VA profiles definitions for gst_vaapi_profile_get_codec() to work.
2010-04-23 10:58:19 +00:00
gb
b0493e729c
Add a means to cap the number of objects allocated in the pool.
2010-04-21 15:03:31 +00:00
gb
30fbcb1ee8
Add VA entrypoint abstraction.
2010-04-21 15:02:23 +00:00
gb
508edba9a0
Add VA profile abstraction.
2010-04-20 13:36:04 +00:00
gb
fa11094655
Fix OpenGL rendering on G45 systems.
2010-04-20 07:51:23 +00:00