Commit graph

897 commits

Author SHA1 Message Date
Wim Taymans
1fffbe9876 Merge branch 'master' into 0.11
Conflicts:
	ext/ffmpeg/gstffmpegcodecmap.c
2011-10-27 16:31:30 +02:00
Sjoerd Simons
eb2e9f48e3 ffmpegenc: Pass the size of the output buffer to avcodec_encode_audio
avcodec_encode_audio is documented as taking the size of the output
buffer not the size of the input buffer.  This fixes the use of the G722
encoder and makes the code more consistent with avconv from the libav
source tree.
2011-10-19 13:18:35 +01:00
Sjoerd Simons
b05352beee ffmpegcodecmap: Further specify allowed rates for G722 and G726 2011-10-19 13:18:35 +01:00
Sjoerd Simons
93b333cfea ffmpegcodecmap: Always restrict audio codec in the unfixed cases
If the context isn't fixed yet or if it doesn't exist then always
restrict the caps.

Also restrict the maximum channels for G726 and G722 to 1 channel
2011-10-19 13:18:35 +01:00
Edward Hervey
5264fd3c97 Merge remote-tracking branch 'origin/master' into 0.11 2011-10-17 16:29:10 +02:00
Edward Hervey
99e61c5f3b gstffmpegdec: Re-enable MT-decoding by default 2011-10-17 16:27:36 +02:00
Edward Hervey
fc0a8893d8 gstffmpegutils: Fix include 2011-10-17 16:26:52 +02:00
Edward Hervey
b4ca4b5cfd gstffmpegcodecmap: Avoid string operations on NULL 2011-10-11 14:02:53 +02:00
Wim Taymans
3b230ce9b6 dec: remove interlaced update code 2011-10-03 11:34:34 +02:00
Wim Taymans
d4b2751c39 Merge branch 'master' into 0.11 2011-10-03 11:32:24 +02:00
Vincent Penquerc'h
d4d5e350d0 ffdec: ensure buffers have correct interlacedness in caps
Whether a frame is interlaced or not is unknown at the time of
buffer allocation, so caps on the buffer in opaque will have
a previous frame's interlaced flag set. So if interlacedness
changes, we update the buffer (if any) caps with the correct
interlaced flag once we know.

https://bugzilla.gnome.org/show_bug.cgi?id=656155
2011-10-03 11:18:06 +02:00
Wim Taymans
afb740b897 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	ext/ffmpeg/gstffmpegcodecmap.c
	ext/ffmpeg/gstffmpegdeinterlace.c
2011-09-28 13:29:08 +02:00
Vincent Penquerc'h
8bf3d5a2b7 ffmpegdec: post QoS messages when dropping a frame
There seems to be a little bit of non obvious logic where
the QoS logic can decide to not drop decoding a frame and
pass it to ffmpeg, telling it to drop.
In this case, the QoS logic does not drop the frame itself,
but since the frame will end up being dropped, we still
mark it as dropped and post a QoS message.

https://bugzilla.gnome.org/show_bug.cgi?id=657950
2011-09-26 20:13:58 +01:00
Tim-Philipp Müller
8a34abff64 ffmpegdec: disable parser for already-parsed FLAC input
Not needed to make anything work, just seems to make sense.

https://bugzilla.gnome.org/show_bug.cgi?id=589361
2011-09-26 19:55:54 +01:00
Tim-Philipp Müller
902ee8a905 ffmpegcodecmap: don't create dummy codec data for FLAC decoder
Since then it just errors out because it's too small, as it
wants the flac headers as codec data if there is codec data.

https://bugzilla.gnome.org/show_bug.cgi?id=589361
2011-09-26 19:54:52 +01:00
Tvrtko Ursulin
42cb5bd386 ffdeinterlace: add "mode" property including automatic mode
Just like deinterlace.

https://bugzilla.gnome.org/show_bug.cgi?id=656328
2011-09-26 19:17:41 +01:00
Wim Taymans
09a66b0923 ffmpeg: fix for audio caps change 2011-09-06 15:29:26 +02:00
Nicolas Dufresne
eacf516f7f ffdec: Blacklist non-working subtitle decoders
This include decoder for ASS, SRT, PGS, DVD and DVB. Those are generated
with bad capabilities and are not usable in GStreamer. Other elements exist
to handle those subtitle formats.

https://bugzilla.gnome.org/show_bug.cgi?id=658019
2011-09-03 12:32:55 +01:00
Wim Taymans
85fa801d42 ffdec: port to new flags 2011-08-25 16:41:36 +02:00
Wim Taymans
4361442827 ffmpeg: convert to new caps 2011-08-22 13:33:31 +02:00
Wim Taymans
dd56c2c7ea ffmpeg: port to new audio caps 2011-08-19 18:33:11 +02:00
Wim Taymans
7ae8b453ca ffmpegdec: react to the reconfigure event
Also renegotiate the caps and bufferpool when we have a rereconfigure event
pending.
2011-08-05 12:04:13 +02:00
Wim Taymans
dc12f1c9c9 ffdec: ensure bufferpool size
Make sure the bufferpool size is at least what we expect.
Add some more debug.
2011-08-04 11:10:26 +02:00
Wim Taymans
5151ec83e2 ffdec: enable direct rendering for all formats
Since we now support padding, we can enable direct rendering for all formats.
2011-08-01 18:10:53 +02:00
Wim Taymans
2e02fbba58 ffdec: add alignment support
Always diable EMU_EDGE. Use the bufferpool options to enable extra padding on
allocated frames. If the downstream bufferpool does not support the padding,
disable direct rendering and do the final copy/cropping into the non-padded
output frame.
2011-08-01 17:57:38 +02:00
Wim Taymans
1dc718b195 ffdec: refactor picture fill code
Make a method to hold the code to convert a GstVideoFrame to an AVFrame so that
we can reuse it in the non-direct rendering case.
2011-07-29 13:40:30 +02:00
Wim Taymans
3a8445fc80 ffdec: cleanups
Make things a little more readable.
2011-07-29 13:08:53 +02:00
Wim Taymans
3efd2bcbf7 ffdec: use video frame helpers
Use the video frame helper functions to map and set up the strides in the
picture for ffmpeg.
2011-07-29 12:36:12 +02:00
Wim Taymans
afb69cf1d2 ffmpegdec: fix for query API change 2011-07-29 12:34:04 +02:00
Wim Taymans
8a3014f2fa ffmpeg: fix for query API changes 2011-07-29 12:32:45 +02:00
Wim Taymans
b507d2e013 ffdec: remove unused variable 2011-07-29 10:57:20 +02:00
Wim Taymans
1565260765 ffmpeg: First set of cleanups
Store incomming info from the caps, current context and output formats into
separate variables so that we can more easily handle them.
Refactor the negotiation code.
Rework the bufferpool setup code. Take into account that we might want to
negotiate extra borders around the image in direct rendering.
Remove some of the cropping code for now.
2011-07-29 10:31:03 +02:00
Wim Taymans
62bb960f3a ffmpeg: add GstVideoFormat helper function
Add a function to convert an ffmpeg pixfmt to a GStreamer GstVideoFormat.
2011-07-29 10:25:03 +02:00
Wim Taymans
408b54f5e4 ffdec: cleanups
Remove useless switch
Remove old EXTRA_REF define
Move errors out of the main code path
2011-07-28 12:08:34 +02:00
Wim Taymans
3dd45343d3 ffdec: small cleanups
USe gst_pad_peer_query() to forward the query to the peer.
2011-07-28 12:08:30 +02:00
Wim Taymans
05a5c7f513 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	ext/ffmpeg/gstffmpegcodecmap.c
2011-07-22 17:54:32 +02:00
Raimo Järvi
95fe6ca01e codecmap: Don't create dummy extradata for AAC LATM
If extradata is created for LATM, libav will use it for initialising AAC
decoder and decoding will fail.

Fixes bug #652812.
2011-07-18 12:04:29 +02:00
Edward Hervey
b41422f1f3 Merge branch 'master' into 0.11 2011-07-15 12:34:19 +02:00
Edward Hervey
2f63830924 ffmpegdec: Set default number of threads to 1
Too many suspicious errors/warnings pop up when more than 1 thread
is used.

Fixes #653649
2011-07-11 10:47:26 +02:00
Wim Taymans
fc6b32330a Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	ext/ffmpeg/gstffmpegdec.c
2011-07-07 13:50:18 +02:00
Tim-Philipp Müller
508d4918b0 ffmpegscale: add cast to fix compiler warning 2011-07-05 10:43:14 +01:00
Tim-Philipp Müller
7b2e3137a5 ffmpegscale: update for GstVideoInfo API changes 2011-07-05 10:39:52 +01:00
Edward Hervey
37f5d70332 ffmpegdec: Setting AC3/EAC3/DTS decoders to rank NONE for release
This still causes issues with bad (missing?) downmixing.

They can be handled by existing a52dec/dtsdec

See Bug #608892
2011-06-30 21:38:57 +02:00
Mark Nauwelaerts
6d517b3b76 ffmpegcodecmap: really include all supported sample formats in audio caps
Fixes #653717.
2011-06-30 11:50:21 +02:00
Mark Nauwelaerts
856dbe6f21 ffmpegdec: avoid allocating and leaking local avpacket helpers
... by _init'ing them as locals rather than _new'ing them.

Fixes #653648.
2011-06-30 11:49:39 +02:00
Mark Nauwelaerts
156b26492d ffmpegenc: handle filter caps in _getcaps 2011-06-30 09:21:31 +02:00
Mark Nauwelaerts
e937db0f92 ffmpegenc: properly handle caps event
... which comes down to unconditionally eating incoming caps event,
since that one could never correctly describe the setup for downstream
elements.
2011-06-30 09:20:11 +02:00
Mark Nauwelaerts
bd5e3a51dd ffmpegenc: ensure properly negotiated prior to processing
Doing so is even more pertinent in 0.11, since core assists much less
in setting up negotiation and feedback on handling caps event is more likely
to get lost.
2011-06-30 09:18:42 +02:00
Mark Nauwelaerts
1583b89942 ffmpegdec: unref eaten caps event 2011-06-29 11:44:27 +02:00
Mark Nauwelaerts
36fe313fbd ffmpegdec: unref allocation query 2011-06-29 11:44:11 +02:00
Jan Schmidt
3a12092ae6 Enable threading in ffmpeg decoders that support it.
Add a max-threads property, which defaults to '0 = auto'
Add a utility function taken from libschroedinger which sets
the ffmpeg worker thread count to match the computer processor
count by default.
2011-06-21 14:33:29 +10:00
Wim Taymans
0c026bde71 ffmpeg: port to new caps 2011-06-20 11:57:29 +02:00
Wim Taymans
916d323a53 swscale: port to new video API 2011-06-20 11:29:10 +02:00
Wim Taymans
afaeebc1b1 ffmpeg: fix some caps 2011-06-20 10:42:30 +02:00
Wim Taymans
4b5cfd1e31 utils: update for buffer API change 2011-06-13 16:34:18 +02:00
Wim Taymans
7f4df8f536 ffdec: update for bufferpool API change 2011-06-11 18:55:05 +02:00
Wim Taymans
fcf5e53055 ffdec: small cleanups
We can use or to calculate the max alignment
2011-06-10 18:07:28 +02:00
Wim Taymans
e31b9c8295 dec: fix for new alignment values 2011-06-10 17:56:27 +02:00
Wim Taymans
888a1c0e5e ffdemux: fix for API change of flush_start 2011-06-10 17:56:01 +02:00
Edward Hervey
aaa07b3b4c Merge branch 'master' into 0.11 2011-06-08 18:04:49 +02:00
Edward Hervey
4a130c6a6c ext: caps are now set via GstEvent and not setcaps 2011-06-08 18:04:07 +02:00
Raimo Järvi
8e2404b8df ffdec: Fix calculating frame duration from last timestamp and frame count.
Fixes bug #651714.
2011-06-06 14:45:56 +02:00
Wim Taymans
97430ccbbc ffdec: use caps event instead of setcaps 2011-06-02 18:39:07 +02:00
Wim Taymans
c312409c83 Merge branch 'master' into 0.11 2011-06-02 17:03:21 +02:00
Wim Taymans
dad7da7ca6 ffmpeg: port to new API 2011-06-02 16:23:19 +02:00
Raimo Järvi
4a66ecdf25 ffdec: Check for AV_NOPTS_VALUE in PTS value.
https://bugzilla.gnome.org/show_bug.cgi?id=651625
2011-06-01 16:11:05 +02:00
Raimo Järvi
82463fe8bc ffdec: Add mpegversion 2 to AAC decoder caps
Fixes bug #651447.
2011-05-30 12:31:31 +02:00
Edward Hervey
9db205f9f7 ffmpegdec: Don't discard timestamps if output AND input are in order
Avoids bogus timestamps for AVCHD-lite streams
2011-05-29 20:09:47 +02:00
Sebastian Dröge
d1fac3e779 ffenc_aac: Add profile and level to the caps
Fixes bug #650596.
2011-05-27 10:54:12 +02:00
Sebastian Dröge
b8f7aab1ba ffdec: Always use parser for AAC LATM/LOAS 2011-05-26 15:09:18 +02:00
Rafael Diniz
df40381a83 ffmpeg: Add codec mapping for AAC LATM/LOAS
Also add the stream-format fields to the CODEC_ID_AAC caps.

Fixes bug #650695.
2011-05-25 10:10:48 +02:00
Thadeu Lima de Souza Cascardo
a3c56f60cd ffdec: Do not use invalid input timestamp as next timestamp.
When input buffer timestamps are invalid, next timestamp are used for
audio. Then, the next out timestamp is updated with the used timestamp
and the calculated duration. However, if the used timestamp is invalid,
it should not be used. Otherwise, the next buffer will use a wrong
timestamp that is not in the clipped segment, making the buffer to be
dropped.

This fixes playback with SBTVD MPEG TS streams, using AAC LATM.
2011-05-09 11:02:50 +02:00
Vincent Penquerc'h
920bfb0da2 ffdec: do not try to resync to the next keyframe when late
A keyframe may be quite a while in the future, and the decoder
has no way of knowing this. A poor decision could mean quite some
time with no video output.
This decision should be left to the upstream element: a demuxer
might know about incoming keyframes, or some other element might
be able to request a keyframe.

Fixes bug #649372.
2011-05-06 13:23:45 +02:00
Wim Taymans
8860e5c6c9 ffdec: fix for ALLOCATION query API changes 2011-05-02 11:12:10 +02:00
Wim Taymans
c71a2ec502 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	ext/ffmpeg/gstffmpegdec.c
2011-04-29 18:40:36 +02:00
Wim Taymans
195f2afea6 ffmpeg: use bufferpool instead of pad_alloc 2011-04-29 18:35:55 +02:00
Edward Hervey
775a3a0640 postproc: pp_*_t => pp_* 2011-04-21 20:56:45 +02:00
Edward Hervey
2ce58ad764 audioresample: Use new av_audio_resample API
We might want to expose the various properties in the future
2011-04-21 20:56:45 +02:00
Edward Hervey
a30b434b53 ffmpegdec: Set caps on outgoing audio buffers 2011-04-21 20:56:45 +02:00
Edward Hervey
fe1a971b31 ffmpegdec: Use new AVPacket-based API
Right now it doesn't use any of the extra fields AVPacket provides.
It might be wise to investigate the pts/dts ones to see if we can finally
get rid of the timing-related cruft we have.
2011-04-21 20:56:45 +02:00
Edward Hervey
436a211aff gstffmpegdec: Use non-deprecated av_parser_parse2 2011-04-21 20:56:45 +02:00
Edward Hervey
7c85e2d743 ffmpegdec: Use skip_frame instead of deprecated hurry_up 2011-04-21 20:56:45 +02:00
Edward Hervey
71f48a1d84 ffmpegcfg: mb_qmin/mb_qmax are deprecated/removed
We just use qmin/qmax instead
2011-04-21 20:56:45 +02:00
Edward Hervey
a004f0bc34 ffmpegdemux: Define our own MAX_STREAMS 2011-04-21 20:56:45 +02:00
Edward Hervey
f16291a6cc ffmpeg: Disable code using old metadata API
It is now gone and we need to switch to the new API

See #566605
2011-04-21 20:56:45 +02:00
Edward Hervey
5aa722965c ffmpegdemux: The index_built AVFormatContext hasn't been used in over 2 years 2011-04-21 20:56:45 +02:00
Edward Hervey
fd80f177c9 codecmap: _XVID is gone
It was always a bogus one, since it used the external libxvid for encoding.
2011-04-21 20:56:45 +02:00
Edward Hervey
78ae6a34cb ffmpeg: PKT_FLAG_KEY => AV_PKT_FLAG_KEY 2011-04-21 20:56:44 +02:00
Edward Hervey
dfd26c36f3 ffmpeg: AVERROR_* => AVERROR(*) 2011-04-21 20:56:44 +02:00
Edward Hervey
2f81d0d63b ffmpeg: CodecType => AVMediaType 2011-04-21 20:56:44 +02:00
Edward Hervey
446c50e052 gstffmpeg: register_protocol => av_register_protocol2 2011-04-21 20:56:44 +02:00
Wim Taymans
6d4cdb2877 ffmpeg_use G_DEFINE_TYPE 2011-04-19 19:04:36 +02:00
Wim Taymans
198fa2571b Merge branch 'master' into 0.11 2011-04-19 19:03:06 +02:00
Marc Plano-Lesay
9c42b7cae9 Fix unused-but-set-variable warnings with gcc 4.6 2011-04-19 16:21:20 +01:00
Edward Hervey
c35c1d1446 gstffmpeg(de)mux: Disable known broken (de)muxers
Idea provided by David Schleef
Support provided by Michael Smith and Tim Mueller
Food and Drinks provided by Toronado
2011-04-09 01:17:24 +02:00
Stefan Kost
dd7b219c42 ffmpeg: don't divide by 0 when checking the framerates
Check for denom==0 first and set it to on in that case.
2011-04-08 11:42:33 +03:00
Wim Taymans
6444bd2557 dec: avoid making the buffer writable
Set the caps right after allocation of the buffer because we know the buffer is
writable then and we are correctly negotiated. Since ffmpeg keeps around
references to frames, making the buffer metadata writable where it was done
before pushing will always end up with a copy and that makes the sink do a slow
memcpy all the time.
2011-04-07 12:34:51 +02:00
Wim Taymans
8faa991476 Merge branch 'master' into 0.11
Conflicts:
	ext/ffmpeg/gstffmpegdec.c
2011-04-07 12:11:37 +02:00
Wim Taymans
450a4fdb51 dec: Fixes
Set caps on buffers right after we allocate them to avoid refcounting problems
and having to make the buffer metadata writable for no good reason.
Don't unmap the memory with a 0 size or we would modify the memory size when
it's not needed.
2011-04-07 12:02:57 +02:00
Miguel Angel Cabrera Moya
f63d36ade8 ffmpegdec: do buffer padding before parsing and before decoding
FFMpeg parsing and decoding calls require to additionally allocate bytes
at the end of the input bitstream and this padding must be initialized
to zero.

https://bugzilla.gnome.org/show_bug.cgi?id=595590
2011-04-05 14:14:38 +02:00