Commit graph

346 commits

Author SHA1 Message Date
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 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 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
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
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 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 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 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
Edward Hervey aaa07b3b4c Merge branch 'master' into 0.11 2011-06-08 18:04:49 +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
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 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 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 2f81d0d63b ffmpeg: CodecType => AVMediaType 2011-04-21 20:56:44 +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
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
Wim Taymans 8095b31f9c ffmpeg: port to new memory API 2011-04-04 13:18:13 +02:00
Wim Taymans 4345d10577 WIP: porting to 0.11 2011-04-04 12:23:05 +02:00
Tim-Philipp Müller 8d40c6357d ffmpegdec: improve error message when set_caps is called but we have no mapping
This may happen e.g. if gst-ffmpeg is compiled against an external
libavcodec and the external lib is upgraded.

See e.g.
https://bugzilla.gnome.org/show_bug.cgi?id=640825
2011-01-31 23:28:33 +00:00
Edward Hervey 2de5aaf22d ffmpegdec: Set the mp3 decoder to a rank of NONE
It's just causing too many headaches. This will force people to use
a working mp3 decoder, like mad.
2011-01-07 18:08:15 +01:00
Edward Hervey 051e2de3d3 ffmpegdec: Fix unitialized variables on macosx 2011-01-05 16:59:55 +01:00
Wim Taymans 22d44c87b1 ffmpgdec: work around parser timestamp bug
Sometimes the parser loses track of timestamps and starts to reuse old
timestamp. Feed it some dummy data and clear some context variables to work
around the problem.
2010-12-21 12:14:22 +01:00