Wind Yuan
c899947e17
display: add support for rotation modes.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-08-27 18:41:22 +02:00
Gwenole Beauchesne
a192f40ed9
display: add support for rendering modes.
...
A rendering mode can be "overlay" or "texture"'ed blit.
The former mode implies that a VA surface used for rendering can't be
re-used right away for decoding, so the sink shall make provisions to
retain the associated surface proxy until the next surface is to be
displayed.
The latter mode implies that the VA surface is implicitly copied to an
intermediate backing store, or back buffer of a frame buffer, so the
associated surface proxy can be disposed right away.
2012-08-27 17:52:32 +02:00
Gwenole Beauchesne
a503aaf9b9
display: add initial support for display attributes.
...
The VA display attributes are mapped to properties so that to maintain the
GStreamer terminology. Properties are to be identified by name, but internal
functions are available to lookup the property by the actual VA display
attribute type.
2012-08-27 17:52:32 +02:00
Sreerenj Balachandran
f2741a88cc
jpeg: fix end-of-image (EOI) handler.
...
decode_current_picture() was converted to return a gboolean instead
of a GstVaapiDecoderStatus, so we were not getting out of the decode
loop as expected, or could cause an error instead.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-08-27 11:03:16 +02:00
Gwenole Beauchesne
1fb8f4791f
mpeg2: include start code into VA slice data buffer.
...
Integrate the start code prefix in the slice data buffer that is submitted
to the hardware. VA-API specifies that slice_data_offset is the offset to
the first byte of slice data. And, for MPEG-2, slice() data begins with
the slice_start_code. Some VA driver implementations (EMGD) expect this.
2012-08-27 10:36:51 +02:00
Javier Jardón
5157a01942
decoder: use g_object_notify_by_pspec().
...
Use g_object_notify_by_pspec() instead of g_object_notify() so that to
avoid a property name lookup. i.e. this makes notifications faster to
the `vaapidecode' element.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-08-27 09:56:47 +02:00
Gwenole Beauchesne
a10ee527c7
wayland: handle de-interlacing flags.
...
VA/Wayland API was updated to allow flags for bob deinterlacing.
More elaborated filters will require a complete VA/VPP pipeline.
2012-08-06 19:21:03 +02:00
Gwenole Beauchesne
0b3d75f14b
jpeg: fix default quantization tables.
...
Two elements in the luminance quantization table were wrong. So,
gst_jpeg_get_default_quantization_tables() now reconstructs tables
in zig-zag order from the standard ones (Tables K.1 and K.2).
2012-08-02 18:27:48 +02:00
Gwenole Beauchesne
f88323857d
jpeg: compute default Huffman tables.
...
... instead of having them pre-calculated. This saves around 1.5 KB
of data in the DSO but requires gst_jpeg_get_default_huffman_tables()
to do more work. Though, the client application may have to call that
function at most once, only.
2012-08-02 15:17:57 +02:00
Gwenole Beauchesne
71e4936e5e
display: drop VAProfileNone entries from debug messages.
2012-08-01 18:30:27 +02:00
Yan Yin
8bd3070c51
display: query for supported display attributes.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-08-01 18:27:38 +02:00
Yan Yin
a72d10ca0e
utils: add string_of_VADisplayAttributeType() helper.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-08-01 18:27:37 +02:00
Gwenole Beauchesne
657f0a4a6f
Add initial support for VA/DRM.
2012-08-01 16:40:17 +02:00
Gwenole Beauchesne
7070961202
Fix build without X11 (again).
...
Don't try to build libgstvaapi-x11.so.* if X11 was disabled. Also shuffle
files list wrt. x11, glx and wayland backends.
2012-07-31 17:58:43 +02:00
Gwenole Beauchesne
7c1b9b48e4
jpeg: update to the latest VA-API changes (0.32.1+).
2012-07-31 11:51:57 +02:00
Gwenole Beauchesne
4401ada22a
wayland: implement display ::get_size*() hooks.
2012-07-27 14:35:48 +02:00
Kristian Høgsberg
22b2c2cb4f
wayland: use scale fullscreen method.
...
This makes the compositor scale the surface to fit and preserves aspect
ratio.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-07-26 16:12:56 +02:00
Kristian Høgsberg
44d6f7631b
wayland: respond to ping/pong protocol so we're not deemed unresponsive.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-07-26 16:12:56 +02:00
Gwenole Beauchesne
af3b6dc2b8
wayland: fix double disconnect of display.
2012-07-25 15:31:42 +02:00
Gwenole Beauchesne
5be6de20cb
wayland: mangle display name for cache lookups.
2012-07-25 15:31:42 +02:00
Gwenole Beauchesne
0bf1e761f9
Fix build without X11.
2012-07-25 15:31:42 +02:00
Gwenole Beauchesne
9e00c87367
plugins: add support for Wayland.
2012-07-25 15:31:42 +02:00
Sreerenj Balachandran
621bb12be6
Add initial support for VA/Wayland.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-07-25 15:31:42 +02:00
Gwenole Beauchesne
4e53b5fe4e
display: fix destruction of mutex.
2012-07-25 14:37:11 +02:00
Gwenole Beauchesne
437bc925f6
display: add display types.
...
Move display types from gstvaapipluginutil.* to gstvaapidisplay.* so that
we could simplify characterization of a GstVaapiDisplay. Also rename "auto"
type to "any", and add a "display-type" attribute.
2012-07-25 14:37:11 +02:00
Gwenole Beauchesne
411b970f8a
display: use prefixed display names for cache lookups.
...
This improves display name comparisons by always allocating a valid display
name. This also helps to disambiguate lookups by name in the global display
cache, should a new backend be implemented.
2012-07-25 14:27:05 +02:00
Gwenole Beauchesne
8ef490a3de
videobuffer: drop deprecated functions.
...
Move video buffer creation routines to plugin elements. That exclusively
uses *_typed_new*() variants.
2012-07-24 16:13:31 +02:00
Gwenole Beauchesne
809a85433d
videobuffer: mark video buffer creation routines as deprecated.
...
The vdeo buffer creation routines shall actually be internal to gstreamer-vaapi
plugin elements. So deprecate any explicit creation routines that are not the
new *_typed_new*() variants.
2012-07-24 15:57:57 +02:00
Gwenole Beauchesne
e12ef8e6a2
videobuffer: factor out base and GLX implementations.
...
Introduce new typed constructors internal to gstreamer-vaapi plugin elements.
This avoids duplication of code, and makes it possible to further implement
generic video buffer creation routines that automatically map to base or GLX
variants.
2012-07-24 15:57:57 +02:00
Gwenole Beauchesne
e52def4737
utils: fix gl_create_context() with parent context set.
...
If GLX window was created from a foreign Display, then that same Display shall
be used for subsequent glXMakeCurrent(). This means that gl_create_context()
will now use the same Display that the parent, if available.
This fixes cluttersink with the Intel GenX VA driver.
2012-07-24 15:57:57 +02:00
Gwenole Beauchesne
7a0382130f
configure: drop check for --enable-vaapi-glx.
...
This flag is obsolete. It was meant to explicitly enable/disable VA/GLX API
support, or fallback to TFP+FBO if this API is not found. Now, we check for
the VA/GLX API by default if --enable-glx is set. If this API is not found,
we now default to use TFP+FBO.
Note: TFP+FBO, i.e. using vaPutSurface() is now also a deprecated usage and
will be removed in the future. If GLX rendering is requested, then the VA/GLX
API shall be used as it covers most usages. e.g. AMD driver can't render to
an X pixmap yet.
2012-07-24 15:57:57 +02:00
Gwenole Beauchesne
b6c97e31ee
configure: improve checks for GLX.
2012-07-20 14:44:27 +02:00
Gwenole Beauchesne
9491a35731
Drop support for obsolete VA-API versions < 0.30.4.
2012-07-20 14:11:42 +02:00
Gwenole Beauchesne
bcae632c32
vaapisink: drop checks for new APIs used by default.
...
GStreamer -base plugins >= 0.10.31 are now required, so the checks for
new APIs like GstXOverlay::set_window_handle() and ::set_render_rectangle()
are no longer necessary.
2012-07-20 14:11:42 +02:00
Gwenole Beauchesne
d8b0c8ec38
Use standard G_GNUC_INTERNAL keyword instead of attribute_hidden.
2012-07-19 18:01:12 +02:00
Gwenole Beauchesne
562d98ec56
Drop obsolete GstVaapiTSB.
...
It has been replaced with a GstAdapter and gst_adapter_prev_pts().
2012-07-19 17:58:21 +02:00
Gwenole Beauchesne
9d440fafb3
Drop all references to USE_CODEC_PARSERS.
2012-07-19 17:30:36 +02:00
Gwenole Beauchesne
7f47ac3bea
Drop FFmpeg-based decoders.
...
GStreamer codecparsers-based decoders are the only supported decoders now.
Though, FFmpeg decoders are still available in gstreamer-vaapi 0.3.x series.
2012-07-19 17:30:36 +02:00
Javier Jardón
dba174906a
libs: declare _get_type() functions as const.
...
Declaring a function as const enables better optimization of calls
to the function.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-07-19 15:19:17 +02:00
Javier Jardón
30024b3f8e
libs: use g_clear_object() wherever applicable.
...
This is a preferred thread-safe version. Also add an inline version of
g_clear_object() if compiling with glib < 2.28.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-07-19 15:19:17 +02:00
Javier Jardón
c415868f26
libs: use generic g_cclosure_marshal_VOID__VOID().
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-07-19 15:19:16 +02:00
Gwenole Beauchesne
27c8269b43
glibcompat: drop explicit check for g_list_free_full().
2012-07-19 14:29:33 +02:00
Gwenole Beauchesne
fbb9a5e1c0
jpeg: fix make dist.
2012-07-19 13:57:05 +02:00
Gwenole Beauchesne
1139908487
jpeg: update to match latest parser API.
2012-07-17 18:02:16 +02:00
Gwenole Beauchesne
8f93bbc937
codecparsers: jpeg: tweak parser API.
...
... to allow for more consistent parsing API among various codec parsers.
In particular, drop use of GList.
2012-07-17 18:02:16 +02:00
Gwenole Beauchesne
06be1afea6
jpeg: fix build with VA-API < 0.32.0.
2012-06-26 15:18:53 +02:00
Gwenole Beauchesne
a9bd8400db
Fix build with recent GStreamer stack.
2012-06-26 10:57:34 +02:00
Gwenole Beauchesne
4e1a354340
jpeg: update to current VA/JPEG decoding API.
2012-06-26 10:57:34 +02:00
Gwenole Beauchesne
326a229636
codecparsers: jpeg: track valid quantization and Huffman tables.
...
Add valid flag to GstJpegQuantTable and GstJpegHuffmanTable so that
to determine whether a table actually changed since the last user
synchronization point. That way, this makes it possible for some
hardware accelerated decoding solution to upload only those tables
that changed.
2012-06-21 16:06:47 +02:00
Wind Yuan
e61f4c4445
codecparsers: jpeg: use U_READ_UINT*() wherever possible.
...
Use GstByteReader *_unchecked() variants as much as possible.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-06-21 15:30:54 +02:00
Wind Yuan
90e6532fd3
jpeg: add new GstJpegHuffmanTables structure.
...
Add new GstJpegHuffmanTables helper structure to hold all possible
AC/DC Huffman tables available to all components.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-06-21 15:30:54 +02:00
Wind Yuan
4c5cc7eff9
jpeg: make gst_jpeg_parse() support multiple scans.
...
gst_jpeg_parse() now gathers all scans available in the supplied
buffer. A scan comprises of the scan header and any entropy-coded
segments or restart marker following it. The size and offset to
the associated data (ECS + RST segments) are append to a new
GstJpegScanOffsetSize structure.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-06-21 15:30:53 +02:00
Wind Yuan
53cbdcc1e6
jpeg: update to match latest parser API.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-05-15 18:25:03 +02:00
Gwenole Beauchesne
0cf06cdbcb
jpeg: simplify and optimize parser API.
2012-05-15 16:08:44 +02:00
Wind Yuan
0fe727ba77
mpeg: fix picture used to determine backward_reference_vop_coding_type.
...
Complete fix brought by bf9f77b1af
but Gwenole did not apply all the bits.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-05-11 11:20:45 +02:00
Wind Yuan
c40c05dc45
mpeg4: map Simple_Scalable profile to Advanced_Simple profile.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-05-10 11:52:06 +02:00
Wind Yuan
96437a7a16
mpeg4: handle skipped frames (vop_hdr->coded = 0).
...
Gracefully skip non VOP coded frames.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-05-10 11:52:06 +02:00
Wind Yuan
1632b40982
mpeg4: fix timestamp issues on too fast playback.
...
Improve generation of presentation timestamps to be less sensitive
to input stream errors. In practise, GOP is also a synchronization
point for PTS calculation.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-05-10 11:38:06 +02:00
Gwenole Beauchesne
449606efc5
Fix build without JPEG decoder.
2012-04-16 10:02:29 +02:00
Wind Yuan
bf9f77b1af
mpeg4: fix VOP coding type of backward reference pictures.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-04-12 11:48:24 +02:00
Wind Yuan
60b5c2da97
mpeg4: fix handling of temporal reference distances.
...
TRD and TRB fields are not large enough to hold the difference of PTS
expressed with nanosecond resolution. So, compute them from the original
VOP info.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-04-12 11:44:16 +02:00
Gwenole Beauchesne
687b482895
dpb: mpeg2: cosmetics.
...
Define MAX_MPEG2_REFERENCES to 2 and avoid magic numbers all around.
2012-04-12 11:00:22 +02:00
Wind Yuan
75e8a7d6f8
Add initial JPEG decoder.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-04-11 19:38:12 +02:00
Wind Yuan
c350a0809d
codecparsers: add JPEG parser.
...
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2012-04-11 19:38:12 +02:00
Gwenole Beauchesne
49b1dca2d3
mpeg2: fix calculation of macroblock_offset.
...
Fix decoding of streams with extra slice() information before the first
macroblock(). e.g. this fixes sony-ct3.bs from conformance test.
2012-04-02 18:42:12 +02:00
Gwenole Beauchesne
2d36f6199e
mpeg2: fix interpolation of GOP TSN from new PTS.
...
New GOP TSN base could be mis-calculated. In particular, this fixes
decoding of uruseiyatsura.vob from <http://samples.mplayerhq.hu/ >.
2012-04-02 18:09:21 +02:00
Gwenole Beauchesne
9c8b85b3c7
mpeg2: fix decoding of high profile streams.
...
Allow MPEG-2 High profile streams only if the HW supports that profile
or no High profile specific bits are used, and thus Main profile could
be used instead. i.e. chroma_format is 4:2:0, intra_dc_precision is not
set to 11 and no sequence_scalable_extension() was parsed.
2012-04-02 16:12:32 +02:00
Gwenole Beauchesne
d9c57a236d
Fix a few documentation issues.
2012-04-02 13:06:15 +02:00
Gwenole Beauchesne
5975def8ab
mpeg2: allocate dummy picture for first field based I-frame.
...
In P-pictures, prediction shall be made from the two most recently
decoded reference fields. However, when the first I-frame is a field,
the next field of the current picture could be a P-picture but only a
single field was decoded so far. In this case, create a dummy picture
with POC = -1 that will be used as reference.
Some VA drivers would error out if P-pictures don't have a forward
reference picture. This is true in general but not in this very specific
initial case.
2012-04-02 11:36:56 +02:00
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
gb
d1709fef62
Fix gl_create_context() to find a GLXFBConfig compatible with the parent GL context.
2010-04-16 13:47:30 +00:00
gb
b8aadb9e82
Fix TFP logic and simplify the FBO model. i.e. it's not necessary
...
to create another texture (and storage) for the TFP, simply a new texture name.
2010-04-02 11:27:23 +00:00
gb
8e6dea5b74
Fix get-out conditions.
2010-04-01 16:11:54 +00:00
gb
3ddab3f253
The shared GL context in GstVaapiTexture is only useful for cases
...
where TFP+FBO are used, thus avoiding the need fully preserve the states
and call into glGet*() functions that need synchronization.
2010-04-01 15:38:59 +00:00
gb
9075c8d23d
Shorter structs.
2010-04-01 13:55:19 +00:00
gb
7edf8c9bb7
Make more helpers internal, thus reducing .text size further. Add gst_vaapi_display_x11_get_screen() helper along the way.
2010-04-01 13:41:24 +00:00
gb
6b56ca0068
Move GST_VAAPI_DISPLAY_VADISPLAY() and GST_VAAPI_DISPLAY_{LOCK,UNLOCK}() to gstvaapidisplay_priv.h.
2010-04-01 09:47:59 +00:00
gb
702f844a7e
Improve handling of GL contexts.
2010-03-31 15:25:19 +00:00
gb
ea1fdba723
Fix build with VA-API < 0.30.
2010-03-30 13:05:31 +00:00
gb
28f73fb582
Enable build without VA/GLX extensions. i.e. fallback to TFP + FBO.
2010-03-30 13:01:34 +00:00
gb
502dec7c1c
Add TFP and FBO helpers.
2010-03-30 12:59:15 +00:00
gb
4ff830812f
Cosmetics. Make vaapi_check_status() use GST_DEBUG() for error messages.
2010-03-30 12:55:27 +00:00
gb
c58a45f099
Use a shorter function name.
2010-03-30 08:13:34 +00:00
gb
a1dbe90077
Add gst_vaapi_surface_query_status() wrapper.
2010-03-30 08:11:50 +00:00
gb
05a1ed2d23
Try to not reference VA-API types directly.
2010-03-30 07:39:16 +00:00
gb
201a7c9ce1
Use a projection suitable for rotation around the Y axis.
2010-03-29 15:51:54 +00:00
gb
1165419fd0
Add glXSwapBuffers() workaround for NVIDIA.
2010-03-29 13:40:27 +00:00
gb
9255310311
Fix texture rendering.
2010-03-29 12:51:38 +00:00
gb
ab8b90aa59
Fix documentation.
2010-03-29 11:25:20 +00:00
gb
dd92195093
Add gst_vaapi_window_glx_put_texture() helper.
2010-03-29 10:40:26 +00:00
gb
504dc9bf98
Fix typos.
2010-03-29 09:09:30 +00:00
gb
10c454e801
Add initial VA/GLX texture abstraction though the API is not good enough yet.
2010-03-26 16:52:07 +00:00
gb
9981f37de7
Add gst_vaapi_object_{,un}lock_display() helpers.
2010-03-26 15:22:00 +00:00
gb
22fe28b823
MT-Safe: lock display.
2010-03-26 11:54:43 +00:00
gb
d84d6b0f80
Make sure window resize completed prior to resizing the GL viewport.
2010-03-26 11:50:31 +00:00
gb
b50e7f1050
gstvaapicompat.h is a private header, don't install it.
2010-03-26 11:39:20 +00:00
gb
9f369020b5
Add gst_vaapi_display_{sync,flush}() helpers.
2010-03-26 11:35:20 +00:00
gb
8ea56134da
Add "synchronous" mode.
2010-03-26 11:30:54 +00:00
gb
15b2a9beec
Only add _display suffix to open & close members because they could be #define to some arbitrary value. lock/unlock are safe names.
2010-03-26 11:02:12 +00:00
gb
72fb4f6def
Restore GLX context only if there is one.
2010-03-26 10:09:23 +00:00
gb
c9f62b7405
Add gst_vaapi_window_glx_make_current(). Handle X11 window size changes and reset the GL viewport.
2010-03-26 09:41:12 +00:00
gb
c3dcabd90c
Check GstVaapiWindow::render() is available prior to calling it.
2010-03-26 08:35:24 +00:00
gb
ec3a04d74d
Fix compile flags.
2010-03-26 08:00:32 +00:00
gb
89a99d828c
Add initial VA/GLX support.
2010-03-25 17:28:49 +00:00
gb
511463c699
Add missing includes (for vaapi_check_status()).
2010-03-25 17:21:56 +00:00
gb
d56fcd0c2b
Only enable GST_DEBUG() if DEBUG is defined. Drop old D(bug()) stuff.
2010-03-25 17:21:13 +00:00
gb
fddeb54248
Add gst_vaapi_window_x11_is_foreign_xid() helper.
2010-03-25 17:18:36 +00:00
gb
b36a2142e4
Allow derived classes to specify custom Visual and Colormap.
2010-03-25 17:18:06 +00:00
gb
86954a32c5
Allow window creation with a specific visual (e.g. for GLX support).
2010-03-25 13:54:06 +00:00
gb
6ad73da390
Fix return value on error (though it's the same in the end).
2010-03-25 13:21:19 +00:00
gb
67de515e63
Simplify initialization of VADisplay.
2010-03-25 12:39:54 +00:00
gb
1703ef2aca
Restore the gst_vaapi_{surface,image,subpicture}_get_id() interfaces.
2010-03-25 09:49:17 +00:00
gb
e4775c4e16
Use the parent display object, no need to maintain another one.
...
In the end, libgstvaapi-x11 reduced by 1 KB in .text vs. 0.1.1.
2010-03-25 09:39:17 +00:00
gb
56658c7aac
Add more internal helpers.
2010-03-25 09:37:40 +00:00
gb
2ecadd45b8
Rename to GST_VAAPI_OBJECT_DISPLAY().
2010-03-24 17:40:19 +00:00
gb
9961c03c6a
All GstVaapiID are initialized to GST_VAAPI_ID_NONE by default.
...
Besides, all GstVaapiObject derived class shall initialize "id" to a valid value.
2010-03-24 17:38:23 +00:00
gb
0881507989
Make GstVaapiWindow* derive from GstVaapiObject.
2010-03-24 17:22:18 +00:00
gb
3fe6ca16e2
gstvaapicompat.h is now a private header (not installed).
2010-03-24 16:27:36 +00:00
gb
520f7ac5b6
Include gstvaapicompat.h in source files only, not headers.
2010-03-24 16:25:56 +00:00
gb
1727295d2c
Drop tedious LIBVA_EXTRA_{CFLAGS,LIBS} definitions in Makefile.am. Override CFLAGS & LIBS instead.
2010-03-24 16:21:20 +00:00
gb
725bc7a607
Add compatibility with the original VA-API 0.29.
2010-03-24 16:17:49 +00:00
gb
afa9b9be06
Add missing file (gstvaapivalue.h).
2010-03-24 15:18:33 +00:00
gb
4f7af960cb
Fix g_warning() invocation.
2010-03-24 15:12:56 +00:00
gb
ae6c1637f3
Deassociate subpictures while destroying the surface.
2010-03-24 15:11:26 +00:00
gb
c8ec504343
Fix destruction order of subpictures. They should be destroyed first.
2010-03-24 14:57:33 +00:00
gb
9713d1a950
Add support for AYUV format.
2010-03-24 14:46:33 +00:00
gb
e4d9e06945
Fix documentation.
2010-03-24 13:44:01 +00:00
gb
b182366483
Move GValue specific stuff to a dedicated file.
2010-03-24 13:37:38 +00:00
gb
1959fa5b20
Cosmetics (vertical alignment).
2010-03-24 13:21:54 +00:00
gb
358be3dda9
Fix return value on error.
2010-03-24 13:20:34 +00:00
gb
a91206bbc1
Move "id" down to the GstVaapiObject base.
2010-03-24 13:19:58 +00:00
gb
1a90e11ae5
Cosmetics (drop extraneous empty line).
2010-03-24 12:59:22 +00:00
gb
2cbcd31488
Add GParamSpecs for GstVaapiID.
2010-03-24 12:57:54 +00:00
gb
a09c84b04d
Add GST_VAAPI_ID_FORMAT() and GST_VAAPI_ID_ARGS() helpers.
2010-03-24 12:38:40 +00:00
gb
647621cf3c
Add GstVaapiID abstraction.
2010-03-24 09:52:43 +00:00
gb
63add8fd63
Drop useless include (<va/va_backend.h>).
2010-03-24 08:35:27 +00:00
gb
9233fcf676
Optimize GST_VAAPI_OBJECT_GET_DISPLAY to avoid a run-time check.
2010-03-24 08:34:11 +00:00
gb
b8b82d3337
Move private definitions and accessors to gstvaapiobject_priv.h.
2010-03-24 08:32:12 +00:00
gb
755f198a74
Fix short descriptions.
2010-03-24 08:16:32 +00:00
gb
9df9f60d62
Use a black background for new windows.
2010-03-23 17:29:47 +00:00
gb
e403f26bc5
Add "destroy" signal.
2010-03-23 17:12:40 +00:00
gb
2155318d12
Make GstVaapi{Surface,Image,Subpicture} derive from a GstVaapiObject.
2010-03-23 16:21:28 +00:00
gb
b271ebd760
Drop introspection annotations since they require gtk-doc >= 1.12.
2010-03-23 13:32:36 +00:00
gb
b4aaa2e8c1
Add note about the fact that the surface holds an extra reference to the subpicture.
2010-03-23 10:51:35 +00:00
gb
95edba8907
Improve debugging messages.
2010-03-23 10:49:33 +00:00
gb
6a8c6ad04c
Add gst_vaapi_surface_{,de}associate_subpicture() API.
2010-03-23 10:36:20 +00:00
gb
55c5b220cd
Wait for MapNotify or UnmapNotify events on foreign windows too.
2010-03-23 08:13:37 +00:00
gb
0bf40c2d44
Check whether the foreign XID is mapped at binding time.
2010-03-23 07:42:05 +00:00
gb
e4a4fd9742
Fix warnings (drop extraneous var).
2010-03-23 06:41:29 +00:00
gb
a1b25e8807
Add GST_VAAPI_WINDOW_XWINDOW() helper macro.
2010-03-23 06:40:27 +00:00
gb
df9e25d473
Shorten condition.
2010-03-22 16:59:29 +00:00