Commit graph

265 commits

Author SHA1 Message Date
Nicolas Dufresne
35c937f2a4 mpeg2dec: Add stride support
This allow using external pools that have different strides from the
default. These strides need to respect certain rules, which we check
and if these are not met, we fallback to generic pool.

https://bugzilla.gnome.org/show_bug.cgi?id=735379
2015-03-13 17:00:03 +00:00
Nicolas Dufresne
7e8050728a mpeg2dec: Re-implement pool handling
This is a rewrite of the pool negotiation and configuration. Direct
to output decoding is now achieved by configuring the pool using
video-alignment. This removes copies when dealing with any elements that
supports VideoAlignment, and enable usage of generic video buffer pool,
XVImagePool and GLPool. It drops the crop meta implementation for now.

https://bugzilla.gnome.org/show_bug.cgi?id=735379
2015-03-13 09:56:00 +00:00
Nicolas Dufresne
77126f73c5 Revert "mpeg2dec: Fix handling of stride"
This reverts commit f3e8dcb9de.
2015-03-09 19:11:51 +00:00
Nicolas Dufresne
d86e34a41e Revert "mpeg2dec: Use propose unref method for buffer"
This reverts commit 63b43d3bee.
2015-03-09 19:11:44 +00:00
Nicolas Dufresne
63b43d3bee mpeg2dec: Use propose unref method for buffer 2015-03-09 18:43:43 +00:00
Simon Farnsworth
f3e8dcb9de mpeg2dec: Fix handling of stride
A pipeline like:

gst-launch-1.0 filesrc location=file.ts ! tsdemux ! mpegvideoparse ! mpeg2dec  ! vaapisink

would look bad when file.ts contains 704x576 video, because vaapisink would
give you buffers of stride 768, but libmpeg2 was not told about this and
used a stride of 704.

Tell libmpeg2 about the stride from  downstream; in the process, teach it to
reject buffer pools that don't meet libmpeg2's chroma stride requirements

Signed-off-by: Simon Farnsworth <simon.farnsworth@onelan.co.uk>
2015-02-15 15:11:41 -06:00
Tim-Philipp Müller
b2e13b82aa mpeg2dec: remove unused struct members 2014-05-16 16:24:46 +01:00
Edward Hervey
a665347345 mpeg2dec: Release codec state on negotiation failures
Else it leaks

CID #1212169
2014-05-09 14:54:54 +02:00
Vincent Penquerc'h
6b887060b1 mpeg2dec: do not reset the whole video info when setting size
New changes to gstvideo will reset all the video info state
when calling _set_format, overwriting what was previously set
in the preceding code.

The comment says the following code is meant to preserve the
pre-crop size, so let's just keep the size and related data
 as this does not seem to break anything else (this is what
the _set_format call would have set before the change that
reset all data, except the colorimetry).
2014-04-04 10:58:50 +01:00
Sebastian Dröge
6049866ca6 mpeg2dec: Use new gst_video_decoder_set_needs_format() API 2013-12-05 11:44:10 +01:00
Mark Nauwelaerts
8c1be8796e mpeg2dec: graceful degradation for badly parsed input 2013-11-11 13:25:22 +01:00
Sebastian Dröge
22b3a60dbd mpeg2dec: Fix mpeg2_reset() calls 2013-08-15 15:30:31 +02:00
Sebastian Dröge
f541f94262 ext: Use new flush vfunc of video codec base classes and remove reset implementations 2013-08-15 15:27:48 +02:00
Edward Hervey
96c15877f2 mpeg2dec: Do a hard reset of flush_stop
Which is notified by hard == 0 with latest refactoring.
2013-08-02 08:25:49 +02:00
Sebastian Dröge
f8e05c2af0 mpeg2dec: Clean up reset/start/stop handling 2013-07-25 13:35:44 +02:00
Edward Hervey
576fe462bc mpeg2dec: Properly reset on sequence changes
Otherwise we end up using stray data/buffers.

Fixes #690701
2013-07-17 16:17:54 +02:00
Sreerenj Balachandran
866f60cce6 mpeg2dec: make the aspect ratio calculation more accurate.
Utilize the libmpeg2 api: mpeg2_guess_aspect() to guess the
aspect-ratio if we don't have a valid upstream PAR.

https://bugzilla.gnome.org/show_bug.cgi?id=685103
2013-06-04 17:29:31 +02:00
Sebastian Dröge
ef182de45f gst: Add better support for static plugins 2013-04-15 15:56:02 +02:00
Thijs Vermeir
6461d0e035 mpeg2dec: use appropriate printf format for gsize 2012-12-19 17:16:53 +01:00
Tim-Philipp Müller
9c690b2018 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 20:40:37 +00:00
Jan Schmidt
6d35db313f mpeg2dec: Don't error out when there is no associated buffer
In 0.10, having mpeg2dec occasionally tell us to output a frame that
was never decoded was just ignored, so do the same in 1.0

Fixes: #685107
2012-10-01 10:43:26 +10:00
Jan Schmidt
ddd13808b3 mpeg2dec: Hold ref to buffer while mapped
So that the buffer still exists when we go to unmap it later,
even if it got pushed in the meantime.
2012-09-11 23:16:45 -07:00
Edward Hervey
2cc06f7aaf mpeg2dec: Don't use NULL values for fbuf
We need to make a difference between the initial dummy buffers (which
have a fbuf->id of NULL) and the buffers on which we allocated
video frames.
2012-08-06 11:53:55 +02:00
Edward Hervey
707b14a2ef mpeg2dec: Avoid dropping first GOP
We use the mpeg2_fbuf_t id field as an integer and not as a pointer, so
do not check if it is NULL or not.

And cleanup a bit of debug
2012-07-26 18:30:04 +02:00
Wim Taymans
f0b0ffa1cf mpeg2dec: copy buffer flags when cropping
When we crop a buffer, copy the flags as well.
2012-07-23 13:32:26 +02:00
Robert Swain
5bc6b54185 mpeg2dec: Fix GstVideoInfo pointer 2012-07-23 11:28:51 +02:00
Robert Swain
870fe4e7ec mpeg2dec: Correctly flag output buffer interlaced state
If the sequence is not flagged as progressive its buffers are marked
interlace mode mixed. There is an individual picture flag indicating
whether picture in the sequence are interlaced or not. This is used
along with the new GST_VIDEO_BUFFER_FLAG_INTERLACED to correctly and
completely indicate the buffer's interlaced state.

Also, TFF and RFF should only be set if the sequence is not progressive.
2012-07-23 11:15:47 +02:00
Sebastian Dröge
a20ba81f9a ext: Update for video base classes API changes 2012-07-23 10:33:33 +02:00
Edward Hervey
89ff56321f mpeg2dec: Propagate GstFlowReturn where needed
It was just ignoring the return values...
2012-07-19 10:00:32 +02:00
Edward Hervey
e0a5d6de60 mpeg2dec: Store temporary buffers out of the way
When mpeg2dec needs to do cropping (because downstream can't handle it),
we need temporary buffers to decode to.

Use the user_data field to store those, and unify the rest of the code
that needs to touch a buffer (regardless of how/where it was allocated).

https://bugzilla.gnome.org/show_bug.cgi?id=680194
2012-07-19 10:00:32 +02:00
Edward Hervey
090e139048 mpeg2dec: Call gst_video_decoder_negotiate() 2012-07-18 18:33:23 +02:00
Wim Taymans
91ba1a2ebb fix for allocator API changes 2012-07-09 16:27:25 +02:00
Wim Taymans
ddd57f9107 update for query api changes 2012-07-06 11:27:27 +02:00
Sebastian Dröge
7c99d37ad6 mpeg2dec: Add comment explaining why we first chain up to the parent class' decide_allocation 2012-06-25 09:43:53 +02:00
Sebastian Dröge
a7aa984d67 mpeg2dec: Set allocation parameters to guarantee 16-byte aligned output buffers
Fixes bug #377713.
2012-06-25 09:34:53 +02:00
Wim Taymans
ca77ad4e05 mpeg2dec: fix compilation 2012-06-20 13:23:51 +02:00
Wim Taymans
e956902511 fix compilation 2012-06-20 10:39:24 +02:00
Sebastian Dröge
349eb6710e mpeg2dec: Port to 0.11 again 2012-06-20 09:06:37 +01:00
Edward Hervey
c31467413a mpeg2dec: Report PAR if not present upstream
And clean up some code
2012-06-19 14:10:20 +01:00
Nicolas Dufresne
32c45932e4 mpeg2dec: use _scale_ceil to compute frame period
https://bugzilla.gnome.org/show_bug.cgi?id=675769
2012-06-19 14:10:20 +01:00
Nicolas Dufresne
4bfeef832e mpeg2dec: mpeg2dec actually has 3 frame latency
https://bugzilla.gnome.org/show_bug.cgi?id=675769
2012-06-19 14:10:20 +01:00
Nicolas Dufresne
da928611b7 mpeg2dec: Fix large output buffers leak 2012-06-19 14:10:20 +01:00
Nicolas Dufresne
92d71237bf mpeg2dec: Port to new way of handling frame reference 2012-06-19 14:10:20 +01:00
Wim Taymans
98a21f9026 mpeg2dec: don't leak input_state 2012-06-19 14:10:20 +01:00
Nicolas Dufresne
9dc1d53cac mpeg2dec: Port to GstVideoDecoder base class
Conflicts:

	ext/mpeg2dec/gstmpeg2dec.c
	ext/mpeg2dec/gstmpeg2dec.h

Back to 0.10 state, needs to be ported to 0.11 again.
2012-06-19 14:10:01 +01:00
Sebastian Dröge
7fa3eb2605 video: Update for libgstvideo API changes 2012-04-19 12:22:08 +02:00
Tim-Philipp Müller
08d20e4da8 Use new gst_element_class_set_static_metadata() 2012-04-10 00:47:44 +01:00
Sebastian Dröge
29a893b494 gst: Update for GST_PLUGIN_DEFINE() API changes 2012-04-05 17:40:12 +02:00
Sebastian Dröge
9e5a55a70f gst: Update versioning 2012-04-04 14:38:53 +02:00
Wim Taymans
ec170a27eb mpeg2dec: fix cropping
fix cropping in mpeg2dec
2012-04-02 15:21:36 +02:00