Commit graph

849 commits

Author SHA1 Message Date
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
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
Wim Taymans
88271530e4 ffmpeg: disable resample 2011-02-28 12:13:17 +01:00
Wim Taymans
7a225ab604 codecmap: use new g_value getters 2011-02-28 12:13:17 +01:00
Julien Isorce
32ca9c111b ffvideoscale: add support for UYVY
Fixes #642015
2011-02-14 16:58:49 +01: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
a2a4ee93c4 codecmap: Add mapping for g722 2011-01-25 16:34:04 +01:00
Edward Hervey
5429138b89 codecmap: Add proper caps name for Camstudio 2011-01-24 18:29:24 +01:00
Edward Hervey
7879105579 gstffmpegdemux: Ignore more pseudo demuxers 2011-01-24 18:29:00 +01:00
Edward Hervey
9a1d1fef32 gstffmpegmux: Blacklist some muxer formats 2011-01-24 17:43:44 +01:00
Edward Hervey
cc4a11831d gstffmpegcodecmap: Add some new codec mappings
VP8
LAGARITH
GSM
GSM_MS
2011-01-24 17:26:20 +01:00
Edward Hervey
ed1b1eefaf ffmpegprotocol: Slight API change 2011-01-24 17:26:20 +01: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
Edward Hervey
a90df26e15 ffmpegenc: Disable non-audio/video encoders
Fixes #629648
2011-01-03 11:45:04 +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
Sebastian Dröge
dde194dc1a ffvideoscale: Change classification to Filter/Converter/Video/Scaler 2010-12-16 10:12:02 +01:00
Sebastian Dröge
a5910b4ec4 ffdeinterlace: Change classification to Filter/Effect/Video/Deinterlace 2010-12-16 10:05:03 +01:00
Wim Taymans
ec48b24291 dec: scale the estimated duration by number of frames
When estimating the frame duration, the diff between two incomming timestamps
should be scaled by the amount of frames in the interval. Improves duration
estimation and DTS interpolation.
2010-12-12 12:38:55 +01:00
Wim Taymans
957c728b3d dec: use input timestamp diff for duration estimation
Use the diff between input timestamps to estimate the duration when no duration
is set on input buffers. Only do this when there are no reordered input
timestamps. Improves interpolation in DTS mode when no input duration is set.
2010-12-12 11:20:22 +01:00
Mark Nauwelaerts
e837ec505d ffmpegenc: ensure proper clean state prior to (re-)negotiation
Fixes #632691.
2010-10-25 12:16:44 +02:00
Wim Taymans
d82633c4e3 ffdec: don't destroy the parser state
When we flush the parser cache, we only need to clear the bytes of the cache,
not the complete state of the cache. In the case of H264 this doesn't require
the parser to receive a new SPS/PPS after a DISCONT buffer.
2010-10-22 13:05:16 +02:00
Wim Taymans
cc2a6e493b ffdec: be more careful with DTS timestamp interpolation
Don't use -1 and 0 duration buffers to calculate next output timestamp as they
are very likely wrong.

Fixes #632877
2010-10-22 13:05:16 +02:00
Stefan Kost
07ce1d1906 various: add missing G_PARAM_STATIC_STRINGS flags 2010-10-19 17:26:08 +03:00
Sebastian Dröge
51fe1a04e6 ffmpeg: Add mapping for YUVA420P <-> A420
This is used by VP6a, which is used by Flash.

See bug #613901.
2010-10-15 11:23:26 +02:00
Edward Hervey
51a0e1270f ffmpegdec: Fix debug statements 2010-10-12 16:17:51 +02:00
Wim Taymans
3f213c1b73 ffdec: use a better algorithm to detect DTS timestamps
Add function to reset the timestamp tracking.
Check for reordered timestamps on the input buffers and assume PTS input
timestamps when we see reordered timestamps.
Recover from an occasionally wrong input timestamp by also tracking the output
timestamps. When we detect a reordered output timestamp, assume DTS input
timestamps again.

Fixes #611500
2010-10-07 17:46:22 +02:00
Wim Taymans
a0bc6f6e9d ffdec: add debug line 2010-10-06 18:51:24 +02:00
Wim Taymans
48e612afda ffdec: add fixmes 2010-10-06 18:23:57 +02:00
Wim Taymans
b41aab3690 ffdec: add some comments 2010-10-06 18:15:03 +02:00
Wim Taymans
76d9685202 ffdec: Add timestamp tracking
Use ffmpeg reordered_opaque to track an id that combines all timing info we have
for a frame. The ids are kept in a 255 item cache.

Fixes #631075
2010-10-06 17:42:30 +02:00
Wim Taymans
edb79396f2 ffdec: remove broken TSHandler
Remove the TShandler code, it is broken when QoS is enabled and ffmpeg provides
much easier methods for tracking timestamps.
Simplify pcache joining.
2010-10-06 17:42:30 +02:00
Wim Taymans
4aa9b97d3f ffcodecmap: avoid setting large framerates
When the framerate is bigger than 1000/1, set it to 0/1 instead. This avoids
letting the videosink do QoS on these very small frame durations.
2010-10-06 16:58:52 +02:00
Wim Taymans
c330cdcc5d ffdec: rename time variable
Rename the time variable to avoid confusion with the time function.
Add some debug to the QoS update function.
2010-10-06 16:58:40 +02:00
Wim Taymans
7d531c06bb ffenc: pass the input size to the encoder
Pass the input buffer size to the encoder instead of the expected output size.
This is needed to make fixed input/output encoder work.
2010-10-06 16:58:34 +02:00
Sebastian Dröge
37357063bf ffmpegdemux: Don't use GST_FLOW_IS_FATAL() and GST_FLOW_IS_SUCCESS() 2010-08-27 18:29:15 +02:00
Tim-Philipp Müller
e0984904c3 ffdeinterlace: some minor clean-ups
Don't use studlyCaps; gboolean != GstFlowReturn; use gst_caps_set_simple()
instead of creating a GValue just to set a boolean field on a caps structure.

See #622736.
2010-07-18 20:15:32 +01:00
Edward Hervey
f9c8fac537 ffmpegmux: Use "Formatter/Metadata" klass when needed
https://bugzilla.gnome.org/show_bug.cgi?id=623671
2010-07-06 14:02:09 +02:00
Edward Hervey
25db74ec41 ffmpegmux: Add more replacements
https://bugzilla.gnome.org/show_bug.cgi?id=623671
2010-07-06 14:02:09 +02:00
Edward Hervey
6191dbb7dd codecmap: Fix the caps of various mov/amr formats
https://bugzilla.gnome.org/show_bug.cgi?id=623671
2010-07-06 14:02:09 +02:00
Edward Hervey
38c2b3788e gstffmpegmux: Set rank of blacklisted muxers to GST_RANK_NONE
https://bugzilla.gnome.org/show_bug.cgi?id=623671
2010-07-06 14:02:09 +02:00
Edward Hervey
00e177458c ext: Fix CFLAGS order
We'd pick up system-wide ffmpeg headers otherwise
2010-07-05 15:48:41 +02:00
Mark Nauwelaerts
1d0b29414a ffmpegenc: fix timestamp resyncing some more
Convert bytes to samples in remaining occurrence.

See #623388.
2010-07-05 11:10:09 +02:00
Thiago Santos
b8f556a566 ffmpegenc: Fix timestamp resyncing
Properly convert bytes into time using sample size, sample rate
and channels number, instead of sample rate only.

This can cause huge timestamp discontinuities (even though the
durations remain correct) and might cause problems to muxers.

Fixes #623388
2010-07-03 11:57:09 -03:00
Edward Hervey
2f6086e495 ffmpegmux: Add rtp to the blacklisted muxers 2010-07-02 17:21:27 +02:00
Edward Hervey
edeb185374 codecmap: Specify the quicktime variant for mov and mp4 formats 2010-07-02 12:40:03 +02:00
David Schleef
00d87bcd83 ffmpegmux: Add alternate element in description
For muxers where there is a better GStreamer alternative, add
"(not recommended, use alternate_element_name instead)" to
the description.

https://bugzilla.gnome.org/show_bug.cgi?id=622773
2010-06-27 10:38:25 +02:00
David Schleef
52e8d62513 ffmpegmux: Disable raw muxers
They are effectively identity elements.  Many are already
disabled via blacklist.

https://bugzilla.gnome.org/show_bug.cgi?id=622773
2010-06-27 10:38:24 +02:00