Commit graph

143 commits

Author SHA1 Message Date
Sebastian Dröge
b278ca55be avviddec: Mark frames as corrupted if libav tells us they are
This is currently only implemented by the h264 codec.

https://bugzilla.gnome.org/show_bug.cgi?id=722290
2014-01-16 13:46:26 +01:00
Vincent Penquerc'h
ca1b5d8576 gst-libav: fix context leaks
A AVCodecContext needs cleaning up before being freed.
Go through all of the allocations/setups to ensure none of them
can leak a context or its contents.
2014-01-15 09:02:33 +00:00
Wim Taymans
ead14945aa avviddec: set output chroma-site
Use libav provided chroma-site and place it on the output caps.
2014-01-13 16:31:05 +01:00
Wim Taymans
81cef109e2 avviddec: release buffers when not direct rendering
New libav will not call the release_buffer callback anymore when
avcodec_default_get_buffer() is called from get_buffer. Releasing of the
memory in a picture should now be done by registering a callback to the
avbuffer objects in the picture. There is some compatibility code to
wrap the memory we provide in get_buffer in avbuffer with a callback to
release_buffer but that is not done when avcodec_default_get_buffer()
is called.

Work around this by adding a dummy avbuffer object to the picture that
will release the frame.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=721077
2014-01-10 17:28:22 +01:00
Sebastian Dröge
1e65aac1a4 avauddec: Give MP3 decoder a MARGINAL rank too
There's no reason why this decoder should not be autoplugged
2014-01-10 13:17:02 +01:00
Sebastian Dröge
9887521a32 av: Enable HEVC / h265 support 2014-01-06 13:39:32 +01:00
Tim-Philipp Müller
8770f22735 avcodecmap: fix regression with wmv3 video in WMVA format
The VC-1 decoder should handle that. Before avdec_wmv3 handled
it, but then we added format=WMV3 to its sink pad template
caps, at which point nothing handled WMVA any longer.

https://bugzilla.gnome.org/show_bug.cgi?id=697665
2014-01-03 16:00:41 +00:00
Sebastian Dröge
1409e1692b av: Update for CodecID -> AVCodecID related changes 2014-01-03 16:28:44 +01:00
Sebastian Dröge
fc57f7fb1b avcfg: Update config parameters a bit to fix compilation
This needs a major rework and should use the new configuration
interface where useful.
2014-01-03 16:28:02 +01:00
Sebastian Dröge
0a819702c0 avenc: Stop using the removed inter_threshold field 2014-01-03 16:27:34 +01:00
Sebastian Dröge
0400f7cc28 avviddec rebase 2014-01-03 16:27:11 +01:00
Sebastian Dröge
8fc3da62c1 avauddec: Stop using AVCODEC_MAX_AUDIO_FRAME_SIZE
And properly use the have_data variable. It's a boolean.
2014-01-03 16:26:10 +01:00
Sebastian Dröge
28d1c135bb avdemux: Stop using r_frame_rate field
It was removed and quite meaningless anyway.
Use the average framerate instead.
2014-01-03 16:25:39 +01:00
Sebastian Dröge
53966ee304 avvidenc: Port to av_encode_video2()
av_encode_video() is deprecated and an ugly API anyway.
2014-01-03 16:24:28 +01:00
Todd Agulnick
4cc981de37 Some compiler warning fixes to satisfy XCode compiler
https://bugzilla.gnome.org/show_bug.cgi?id=720513
2013-12-16 16:54:21 +01:00
Mark Nauwelaerts
47d5c2b6d6 avviddec: improve buffer handling and semantics
... so as to focus on providing *a* buffer rather than one (too) tied
to a frame, in particular allowing multiple allocations related to a frame.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=697806
2013-12-07 12:11:34 +01:00
Mark Nauwelaerts
1aa253cd3b avvidenc: plug input_state leak 2013-12-07 12:11:03 +01:00
Sebastian Dröge
423d9dcd71 avviddec: Use new gst_video_decoder_set_needs_format() API 2013-12-05 11:51:27 +01:00
Mark Nauwelaerts
039b608b24 avviddec: only use upstream framerate if really specified
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=704161
2013-12-02 20:21:34 +01:00
Mark Nauwelaerts
fa5865c0cd avviddec: discard unused input frames
... to avoid these piling up in list of pending frames.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=693772
2013-11-26 20:57:37 +01:00
Mark Nauwelaerts
2ec4008ea5 avviddec: really release frame at proper time
... by also removing it from the pending list of frames,
where it may still be in if it has never been submitted to _finish.
This could happen if is a decode-only frame, or in skipped decoding
situation, ...

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=693772
2013-11-26 20:55:43 +01:00
Tim-Philipp Müller
4072c40b8e avaudec: don't put bogus 0 channel-mask on output caps for mono audio 2013-11-04 23:20:17 +00:00
Tim-Philipp Müller
e9e31ebada avaudenc: post better error message if experimental codecs don't work
https://bugzilla.gnome.org/show_bug.cgi?id=691617
2013-10-26 09:34:30 +01:00
Tim-Philipp Müller
49d0c480ae codecmap: use TRUE for boolean fields in caps 2013-10-26 09:10:03 +01:00
Greg Rutz
13ffed87b1 avenc: Add compliance property
Add a new property to GstFFMpegVidEnc and GstFFMpegAudEnc to supply
the "strict compliance" value to AVCodecContext

https://bugzilla.gnome.org/show_bug.cgi?id=691617
2013-10-15 09:27:03 +02:00
Matthieu Bouron
4c93bffb21 avcodecmap: Make avdec_mjpeg requires a parsed input
Actually avdec_mjpeg does not deal well with incomplete buffers and try
to decode incomplete frames. A parser which will also acts as
an accumulator needs to be inserted before it.

https://bugzilla.gnome.org/show_bug.cgi?id=709352
2013-10-04 10:34:25 +02:00
Sebastian Dröge
5b76550168 avcodecmap: gst_value_can_intersect() does not do what you would think
Check for uniqueness differently now.
2013-10-02 13:59:04 +02:00
Sebastian Dröge
3e154333de avcodecmap: Only append values to the video/audio format lists if we don't have them already 2013-10-02 12:57:36 +02:00
Sebastian Dröge
3c77754524 avviddec: Reset some more fields in ::stop() 2013-10-02 12:52:35 +02:00
Sebastian Dröge
5f5b6f465c avviddec: Don't believe we're negotiated if negotiation failed
It can happen that negotiation fails during get_buffer(), but then
we don't retry later and never return NOT_NEGOTIATED upstream...
and instead run into assertions.
2013-10-02 12:52:11 +02:00
Sebastian Dröge
9febec71c0 avauddec: Don't believe we're negotiated if negotiation failed
It can happen that negotiation fails during get_buffer(), but then
we don't retry later and never return NOT_NEGOTIATED upstream...
and instead run into assertions.

https://bugzilla.gnome.org/show_bug.cgi?id=708769
2013-10-02 12:52:01 +02:00
Sebastian Dröge
9becd72b60 avenc: Choose 25 fps if we don't have any in the caps
Some encoders require a non-zero framerate to be configured properly
and just choosing something will make them not fail completely at
least.

https://bugzilla.gnome.org/show_bug.cgi?id=708732
2013-10-01 22:38:32 +02:00
Sebastian Dröge
2daefd69b8 avcodecmap: Fix boolean expression to fix uninitialized usage of variables 2013-09-28 20:39:15 +02:00
Sebastian Dröge
677eaa6692 avviddec: Initialize strides with the ones of avcodec_default_get_buffer() if we ever call it
https://bugzilla.gnome.org/show_bug.cgi?id=704769
2013-09-12 13:57:41 +02:00
Sebastian Dröge
1277540b8c avviddec: Use the correct context for negotiation
During get_buffer() it can happen that the main context is not
updated yet and only the context passed here has the correct
width, height, etc.
2013-09-12 12:12:23 +02:00
Sebastian Dröge
faec0142e3 avviddec: Remember initially used stride and don't allow stride changes
libav does not allow stride changes currently, fall back to
non-direct rendering here:
https://bugzilla.gnome.org/show_bug.cgi?id=704769
https://bugzilla.libav.org/show_bug.cgi?id=556
2013-09-12 12:11:29 +02:00
Matej Knopp
94875a34d4 avcodecmap: Add support for TechSmith Screen Capture 2
https://bugzilla.gnome.org/show_bug.cgi?id=707878
2013-09-11 11:04:42 +02:00
Alex Ashley
61153a5ac2 avcodecmap: exclude avc3 stream format from AV_CODEC_ID_H264
As part of the changes to support the "avc3" variant of the ISO-BMFF
(see bug #702004) a new stream-format has been created
(video/x-h264, stream-format="avc3", alignment="au") that requires
changes to gstavcodecmap to exclude this format because avdec_h264
expects the SPS and PPS to be in the codec_data.

Amendment 2 of ISO/IEC 14496-15 (AVC file format) is defining a new
structure for fragmented MP4 called "avc3". The principal difference
between AVC1 and AVC3 is the location of the codec initialisation data
(e.g. SPS, PPS). In AVC1 this data is placed in the initial MOOV box
(moov.trak.mdia.minf.stbl.stsd.avc1) but in AVC3 this data goes in the
first sample of every fragment.

https://bugzilla.gnome.org/show_bug.cgi?id=702004
2013-09-04 13:34:00 +02:00
Josep Torra
690ca42e6e codecmap: add mapping for MSS1 and MSS2
Windows Media Video Screen (WMV Screen) are video formats that
specilise in screencast content.
2013-08-30 15:00:30 +02:00
Sebastian Dröge
6571196fb8 libav: avcodec_close() also resets fields like the AVCodec
We need to reload the defaults for the codec after closing it,
otherwise we can't access codec information like the supported
sample rates and can crash.

https://bugzilla.gnome.org/show_bug.cgi?id=707040
2013-08-29 16:53:28 +02:00
Sebastian Dröge
966b53109b avdemux: Add support for video/x-pva
https://bugzilla.gnome.org/show_bug.cgi?id=158719
2013-08-22 14:23:43 +02:00
Tim-Philipp Müller
ffe85cb0ef avvidenc: propagate flow return values upstream in finish() 2013-08-21 13:47:15 +01:00
Sebastian Dröge
ae946bab1c libav: Use new flush vfunc of video codec base classes and remove reset implementations 2013-08-15 15:51:52 +02:00
Hans de Goede
3d628e5676 avmux: Don't fail on commas in the libav muxer type names
https://bugzilla.gnome.org/show_bug.cgi?id=697512
2013-08-13 12:49:54 +02:00
Sebastian Dröge
461a46f17a avdemux: Implement SEGMENT query 2013-07-29 12:19:38 +02:00
Edward Hervey
b1dccb17e9 avcodecmap: Demote WARNING to DEBUG
We cover all the needed formats already. The warning was just getting
in the way.
2013-07-24 12:22:04 +02:00
Olivier Crête
2556cb325a avviddec: Initialise opaque from the start
https://bugzilla.gnome.org/show_bug.cgi?id=693581
2013-07-23 14:01:32 +02:00
Sebastian Dröge
9b2577ea2b avdemux: Add support for group-id in the stream-start event 2013-07-23 09:59:43 +02:00
Arnaud Vrac
4a2054c6aa avviddec: increase bottom padding for output frames
libav can write slightly after the plane end in some SIMD optimized
functions. The extra padding value needs to be at least 16+stride_align
for each plane, so just increase the bottom padding value for the output
frame.

https://bugzilla.gnome.org/show_bug.cgi?id=694299
2013-07-18 16:24:18 +02:00
Wim Taymans
5736513eb0 codecmap: realvideo does not have systemstream property
realvideo does not have the systemstream property and nobody ever sets it so
better remove it here to make it link to something else.
2013-06-25 14:03:07 +02:00