Commit graph

1047 commits

Author SHA1 Message Date
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
Andoni Morales Alastruey
7f12d83a39 ffdeinterlace: Set "interlaced=false" in the source pad's caps
https://bugzilla.gnome.org/show_bug.cgi?id=622736
2010-06-25 17:26:56 +02:00
Thijs Vermeir
330d78f4ff Fix build if ORC is not installed 2010-06-15 09:40:18 +02:00
Sebastian Dröge
3d91d93f32 ffmpeg: Call orc_init() before trying to get target flags 2010-06-14 15:31:34 +02:00
Sebastian Dröge
899d2f0cec Use orc instead of liboil for CPU feature detection 2010-06-14 14:38:44 +02:00
Albert Lee
f310322e90 gstffmpegcodecmap: Fix ATRAC1/3 caps 2010-06-11 08:23:34 +02:00
Zaheer Abbas Merali
22a343207c ffmpegdec: fix typo in comment 2010-06-04 18:30:59 +01:00
Edward Hervey
c28097b6c4 codecmap: First round of type mapping wrapping : image formats 2010-05-31 18:53:12 +02:00
Edward Hervey
2fccd4640f ffmpegdec/enc: Blacklist more raw formats 2010-05-31 18:44:02 +02:00
Tim-Philipp Müller
dc2efe2d24 ffmpegdec: sipro decoder should have higher rank than realaudiodec 2010-05-25 12:55:14 +01:00
Edward Hervey
f9c2467241 ffmpegdec: Don't leak the GstDataPassThrough items 2010-05-17 19:43:24 +02:00
Olivier Crête
83820511a8 gstffmpegenc: Make getcaps proxy the downstream height/width/framerate requirements
See #577784.
2010-05-10 15:41:57 +02:00
Olivier Crête
2b891aff61 codecmap: Respect the various h263 options
See #577784.
2010-05-10 15:41:45 +02:00
Olivier Crête
21e855d167 gstffmpegcfg: Expose loop-filter flag
See #577784.
2010-05-10 15:41:07 +02:00
Edward Hervey
0fb014fdbe ffmpegcodecmap: Add mapping for SIPR 2010-05-08 13:47:56 +02:00
Sebastian Dröge
c023b6a47a postproc: Mark postproc filters table as const 2010-03-24 16:37:37 +01:00
Sebastian Dröge
af3de9ac9f ffmpeg: Fix some remaining compiler warnings 2010-03-24 12:36:27 +01:00
Sebastian Dröge
a450bd027f build: Add all kinds of compiler warning flags and fix the resulting warnings 2010-03-24 12:07:28 +01:00
Sebastian Dröge
2e079b742a ffmpeg: Use gst_element_set_details_simple() 2010-03-24 11:51:53 +01:00
Edward Hervey
3230d4da09 gstffmpegcodecmap: Give a proper mapping for NSV format 2010-03-23 18:53:24 +01:00
Raimo Järvi
9637ff5ab1 ffdec: Update caps if the aspect ratio changes
Fixes bug #613231.
2010-03-18 14:08:51 +01:00
Thiago Santos
b234d0b308 ffdec: Make metadata writable before setting caps
In case we haven't created the output buffer, we should make
metadata writable before setting caps on it.
Fixes check unit tests.
2010-03-11 10:13:46 -03:00
Thiago Santos
c300a0a9f2 ffdec_aac: Do not parse raw format
If the stream is 'raw' format, do not use parsers.
Re-enables the aac decoder by putting it back to default
ffdec rank.

Fixes #566250
2010-03-11 09:55:49 -03:00
Edward Hervey
7162290afe ffmpegdemux: Use av_free_packet.
Fixes #611782
2010-03-04 08:59:19 +01:00
Edward Hervey
d4e63b2727 gstffmpegdec: Disable direct-rendering for svq1/vp56 decoders.
They use a non-standard stride which we can't support.

Fixes #610613
2010-03-03 19:03:19 +01:00
Edward Hervey
38b71e40e6 gstffmpegcodecmap: Remove 'format' specified for wmv3 decoder.
Allows WMVA (Advanced Profile) videos to be properly auto-linked.
Doesn't introduce a regression for VC1 files.

Fixes #611722
2010-03-03 18:35:40 +01:00
Edward Hervey
bb2acca229 gstffmpegdec: Handle durations in reordered frames
The buffer durations were not being reordered along with the timestamp
and offset of the buffers, resulting in buffers using the duration of the
latest incoming frame instead of their original frame.

Fixes #611398
2010-03-01 12:52:19 +01:00
Mark Nauwelaerts
6cf7cadf9b ffmpegdec: do not store timestamp for buffer that will be skipped
Fixes #610481.
2010-02-19 20:33:06 +01:00
Edward Hervey
cc4d502d30 gstffmpegdec: Don't enable xvmc decoders, we can't support the output 2010-02-18 13:29:35 +01:00
Edward Hervey
5678ff1ac0 gstffmpegcodecmap: Add mapping for Indeo 5 2010-02-18 13:29:35 +01:00
Edward Hervey
9c497b6010 gstffmpegcodecmap: Add mapping for Windows Media Speech 2010-02-18 13:29:35 +01:00
Wim Taymans
430b8eb74d ffdec: fixup QCELP to always be mono
Make QCELP always mono, even if the caps tell us a different layout.
2010-02-04 17:08:41 +01:00
Wim Taymans
14e8ce8816 ffmpegdec: only clip to a smaller region
When we have an input width/height that should be used for clipping, only
perform the clipping if the rectangle is smaller than the actual picture size.

Fixes #330681
2010-02-04 13:28:11 +01:00
Wim Taymans
8312a8f89d ffdec: free audio buffer when not decoded
When we don't decode an audio frame (for audio codecs that need a previous audio
frame) free the buffer we allocated.

See #608564
2010-02-01 15:26:43 +01:00
Wim Taymans
d3f9ee4309 ffmpegcodecmap: don't escape codec_data
Don't escape the codec_data, it breaks some streams (but likely also fixes
others). It's better to leave it as is, like most other players do.

See #608332
2010-01-29 14:00:28 +01:00
Edward Hervey
4f9de70744 ffmpegmux/demux: Blacklist ASS/SSA 'demuxers'.
They're not a container format, but a subtitle format, and we already
have plugins to handle those subtitle formats.
2010-01-25 16:40:58 +01:00
Edward Hervey
25073856e4 ffmpegcodecmap: Add proper mapping for Zip Block Motion Video 2010-01-23 15:34:28 +01:00
Edward Hervey
0c938fa10d ffmpegcodecmap: Add proper mapping for LOCO Lossless codec 2010-01-23 14:41:49 +01:00
Edward Hervey
399bb4667b gstffmpegcodecmap: Make a proper mapping for Autodesk Animator Codec 2010-01-23 13:51:24 +01:00
Alessandro Decina
c5f16de56f Revert a change I accidentally introduced in 7c91fb.
I removed the plugin name from an error message for no good reason.
2010-01-22 13:48:24 +01:00
Alessandro Decina
7c91fb4cf4 Fix compiler warnings under OS X. 2010-01-22 11:43:59 +01:00
Julien Moutte
0b40ac6331 ffvideoscale: Fix build warning.
FFMpeg swscale function wants some const pointers.
2010-01-15 22:21:42 +01:00
Edward Hervey
56172c60af gstffmpegcodecmap: Add mappings for new codecs
WMAPro
Dolby TrueHD
Atrac1
TwinVQ
2010-01-13 19:50:10 +01:00
Mark Nauwelaerts
8236e74ca4 ffmpegenc: more consideration for upstream (audio) timestamps 2010-01-12 18:17:40 +01:00
Tim-Philipp Müller
a657f789d3 ffmpegdec: ignore all vdpau decoders
Make check for vdpau decoders more generic. There might be vdpau
decoders we don't expect when using an external ffmpeg version,
and we want those blacklisted as well (e.g. ffdec_mpeg4_vdpau).
2009-12-09 15:27:14 +00:00
Jan Schmidt
faa417cf34 caps: Use default audio channel layouts for some codecs
For a few white-listed codecs, use default fallback channel
layouts when ffmpeg doesn't inform us.
2009-11-22 12:28:12 +01:00
Olivier Crête
b69fcc471e ffenc: Make keyframe forcing thread-safe
Make the keyframe forcing thread-safe, also emit a downstream event
to allow muxers or payloaders to react appropriately.

https://bugzilla.gnome.org/show_bug.cgi?id=602556
2009-11-20 22:14:51 -05:00
Edward Hervey
a00fb254aa Move encoders and muxers to GST_RANK_SECONDARY. 2009-11-18 17:36:48 +01:00
Wim Taymans
59bc425174 ffdec: remove clipping hack
Remove a hack that seems to produce wrong clipping values.
2009-11-16 13:55:01 +01:00
Jan Schmidt
62d54db07d ffmpeg: VC-1/WMV3 fixes.
Use format field in the pad caps to differentiate VC-1 from WMV3.
Fix a typo in the caps creation and parsing - the field is called
'format' - not 'fourcc'

Add a dodgy hack to populate the extradata size field
(first byte) when it is 0 - as it seems to be for some (Matroska)
test files.
2009-11-11 18:53:36 +00:00
Sjoerd Simons
19e81024a3 Always give the most video restricted caps possible
When the video caps aren't fixed yet, make sure we return the most
precise set of caps. It seems a regression was introduced in cc082f,
causing restricted caps to never be used if the context == NULL

None of the restricted caps generation uses the context, so no need to
check whether the context.

Fixes bug #578160.
2009-11-10 12:30:50 +01:00
Edward Hervey
a1384f990b ffmpegdec: Only restore default in AVCodecContext when needed.
Resetting default values is currently very complex in libavcodec, so
we only call it when needed (i.e. when a context was previously used).

Shaves off 10% of the setup of a decoder.
2009-11-09 19:21:35 +01:00
Tim-Philipp Müller
72cd8f1843 ffmpegdec: printf format fixes 2009-11-05 23:54:47 +00:00
Edward Hervey
019a6020e4 ffdec: Don't use an allocated 1-entry structure for private data.
If there's only one entry, just use that entry.
2009-11-02 09:06:46 +01:00
Edward Hervey
bd1b315c43 ffmux: avoid generating caps when registering
Don't generate caps when we register the class but delay that till when
we actually create an instance of the class.
2009-11-02 09:06:40 +01:00
Edward Hervey
e8c689fe94 ffdemux: avoid generating caps when registering
Don't generate caps when we register the class but delay that till when
we actually create an instance of the class.
2009-11-02 09:06:05 +01:00
Edward Hervey
a7dd30d8eb ffenc: avoid generating caps when registering
Don't generate caps when we register the class but delay that till when
we actually create an instance of the class.
2009-11-02 09:06:05 +01:00
Wim Taymans
343c82b18c ffdec: avoid generating caps when registering
Don't generate caps when we register the class but delay that till when
we actually create an instance of the class.
2009-10-22 16:27:28 -04:00
Sebastian Dröge
2ed8b6728d ffmpegenc: Add a note to the buffer-size property description
Setting it has no effect anymore and is deprecated.
2009-10-08 13:54:45 +02:00
Sebastian Dröge
087582d7cd Revert "ffenc: Make the buffer-size property read-only"
This reverts commit 98439aacc7.

Instead of printing a warning when trying to set the property
it should do nothing as before and the property description
should contain a note that setting it has no effect.
2009-10-08 13:52:22 +02:00
Sebastian Dröge
98439aacc7 ffenc: Make the buffer-size property read-only
...instead of just doing nothing when setting it. This makes sure
that people notice that they shouldn't set the property because
it creates a warning now.
2009-10-08 12:29:30 +02:00
Sebastian Dröge
c914f08b40 ffenc: Make sure to always provide large enough buffers
For audio always add the minimum ffmpeg buffer size, for video
use the same weird buffer size as they use in ffmpeg.c:
width*height*6 + 200

Also make setting of the buffer-size property a no-op.

Fixes bug #593651.
2009-10-07 09:15:40 +02:00
Sebastian Dröge
3a96bed6e6 ffmpegenc: Use dash instead of underscore in property names
GLib internally converts them to dashs anyway.
2009-10-07 09:13:56 +02:00
Sebastian Dröge
ee31435d49 Revert "ffmpegenc: Use dash instead of underscore in property names"
This reverts commit b814d25cc9.
2009-10-01 17:03:49 +02:00
Sebastian Dröge
25003e4307 Revert "ffenc: Make sure to always provide large enough buffers"
This reverts commit d9f6febe70.
2009-10-01 17:03:42 +02:00
Sebastian Dröge
799b19c2f2 Revert "ffmpegenc: Also add FF_MIN_BUFFER_SIZE to video buffers too"
This reverts commit 577525af3d.
2009-10-01 17:03:33 +02:00
Sebastian Dröge
577525af3d ffmpegenc: Also add FF_MIN_BUFFER_SIZE to video buffers too
Just to make sure we never get below it in case of very small videos.
2009-10-01 16:46:34 +02:00
Sebastian Dröge
d9f6febe70 ffenc: Make sure to always provide large enough buffers
For audio always add the minimum ffmpeg buffer size, for video
use the same weird buffer size as they use in ffmpeg.c:
width*height*6 + 200

Also make setting of the buffer-size property a no-op.

Fixes bug #593651.
2009-10-01 16:44:22 +02:00
Sebastian Dröge
b814d25cc9 ffmpegenc: Use dash instead of underscore in property names
GLib internally converts them to dashs anyway.
2009-10-01 16:20:13 +02:00
Wim Taymans
b85d889582 ffdec: correctly check for NONE timestamp 2009-09-10 14:11:18 +02:00
Wim Taymans
669a0e359a ffmpeg: add support for G721
Add support for g721, which is like G726 but with 1 channel, 8KHz and a bitrate
of 32000.

Fixes #594454
2009-09-09 13:35:20 +02:00
Jonathan Matthew
595de04316 codecmap: don't set channel-positions for common mono and stereo cases 2009-09-08 15:29:24 +02:00
Wim Taymans
46bf3b92d0 ffdec: disable interpolation when dropping frames
When we are dropping frames because of QoS disable the DTS interpolation because
we won't be able to update the timestamps and end up setting the wrong
timestamps. Instead, simply use the timestamps from ffmpeg.
2009-09-01 21:42:26 +02:00
Tim-Philipp Müller
0044128487 typefinders: skip ffmpeg typefinders if there isn't enough data
ffmpeg typefinders don't do bounds checking for small chunks of
data, so just skip them if we don't have a lot of data, to avoid
invalid memory access and/or crashes.
2009-08-21 02:58:58 +01:00
Wim Taymans
2b967b4122 ffdec: reset timestamp queue after flush 2009-08-18 13:20:55 +02:00
Tim-Philipp Müller
37875a95eb Lower minimum sample rate in generic template caps from 8000 to 4000
Fixes playback of ADPCM clip (#591809).
2009-08-14 16:09:05 +01:00
Sebastian Dröge
5497a8d140 ffmpegdec: Fix strict aliasing warnings 2009-08-13 17:38:32 +02:00
Sebastian Dröge
6923de9378 ffmpegdec: Don't use guintptr as it's new in GLib 2.18
Fixes bug #591469.
2009-08-12 10:57:18 +02:00
Edward Hervey
305e80e7d6 gstffmpeg: Lower debugging levels from WARNING to DEBUG
These statements aren't critical per se... and just clutter debug logs.
2009-08-10 12:04:39 +02:00
Sebastian Dröge
0111edbf5d ffmpegenc: Return all supported caps instead of only the first 2009-08-09 09:47:26 +02:00
Sebastian Dröge
d181dbd7a0 ffmpegenc: If an encoder lists the supported pixfmts use them to create the caps
...instead of creating standard caps with all pixfmts.

Fixes bug #591038.
2009-08-08 22:43:06 +02:00
Sjoerd Simons
ea6a66b5b3 ffmpegdec: Fix duration calculation when ticks_per_frame isn't 1
Fixes bug #591163.
2009-08-08 22:20:03 +02:00
Sebastian Dröge
1c283b8c22 ffmpegdec: Fix compiler warning and indention 2009-08-06 06:57:18 +02:00
Руслан Ижбулатов
54428c186b ffmpegdec: Assign offsets to outgoing buffers more accurate
This now uses ffmpeg functionality to keep random metadata next to
the buffers and to get the correct offset for a frame, similar to how
timestamps are handled.

Fixes bug #578278.
2009-08-06 06:57:09 +02:00
Edward Hervey
56887682d0 gstffmpegenc: Try getting the caps for the declared pixfmt without a context.
PixFmt that are declared in AVCodec.pix_fmts are ones which are 'officially'
declared as being supported. We should therefore not have to create a
AVCodecContext and open an encoder to know if it's supported or not.
Also, doing it this way allows us to better pickup configuration overrides
we have in gstffmpegcodecmap for some codecs (like restrictions on width,
height, framerate like it's the case for dnxhd).

Fixes #575545
2009-07-31 13:27:28 +02:00
Olivier Crête
597f32e895 ffmpegdec: Disable theora decoder
The wrapper does not give the decoder the extradata correctly.
Just use theoradec.

Fixes bug #590172
2009-07-29 14:49:56 -04:00
Руслан Ижбулатов
a5f9485917 Codec frame delay fix and trailing zero-length frame fix
Takes codec frame delay into account (roughly the same way it does for timestamps for reordered frames) to produce frames with correct offsets.
A special hack to allow trailing frame with timestamp=segment.stop to be displayed.

Fixes bug #578278.
2009-07-29 14:19:20 +02:00
Tim-Philipp Müller
508ab716b0 ffmpegdemux: use gst_element_found_tags() for global tags
So we get a message on the bus *and* tag events pushed downstream.
2009-07-28 23:58:02 +01:00
Tim-Philipp Müller
d917f59a84 ffmpegdemux: cache events from upstream and re-send them later
Cache any events we get from upstream before we're open, especially
tag events we may be getting from apedemux/id3demux or the like, and
push them downstream later when we've added our pads instead of just
dropping them silently. Fixes transcoding tags for Monkey's Audio
Files with preceding APE or ID3v2 tags (#586957). Add minimal unit
test for this.

Also push stream tags later after the global tags and the newsegment
event rather than right after creating the pad.
2009-07-28 23:58:02 +01:00
Jordi Mas
c27b4babf1 ffmpegmux: Add proper audio mapping for DVD muxer. Fixes #588546 2009-07-20 11:48:45 +02:00
Tim-Philipp Müller
2f8f014d9b ffmpegmux: don't leak caps if type already exists
We don't know if gst_element_register() will replace the known type
or reject it, so we really need to free the caps before.
2009-07-01 10:45:32 +01:00
Tim-Philipp Müller
048b0145a8 ffmpegdemux: post tags after the initial newsegment event 2009-07-01 10:45:32 +01:00
Wim Taymans
fe10ecd097 ffdec: don't wait for keyframe after discont
After a DISCONT, mark the next frame with DISCONT but don't wait for a new
keyframe. This greatly improves performance on lossy networks or currupted
frames as the decoder can usually continue and conceil errors up to the next
keyframe.
2009-07-01 11:23:59 +02:00
Wim Taymans
31a9d9330b Merge branch 'master' of ssh://git.freedesktop.org/git/gstreamer/gst-ffmpeg 2009-07-01 11:21:46 +02:00
Edward Hervey
fe2291e9e1 gstffmpegdec: Fix debug arguments. Fixes #587297 2009-06-29 13:53:50 +02:00
Arnout Vandecappelle
0192717045 ffmpegdec: don't drop buffers when caps change.
Fixes #585257
2009-06-25 16:05:56 +02:00
Jan Schmidt
473d7391a9 ffmpeg: Don't enter infinite loops in the timestamp tracking
Avoid an infinite loop consuming buffer timestamp info when
the video frames contain only GST_CLOCK_TIME_NONE timestamps.

Add some debug logging in the timestamp tracking paths.

Fixes: #585845
2009-06-24 15:20:12 +01:00
Stefan Kost
8e798e0082 debug: fix unused variable when building with debug disabled 2009-06-17 09:22:14 +03:00
Wim Taymans
608a920771 ffmpegdec: don't do QoS on invalid timestamps
When we convert the timestamp to running_time, don't try to do QoS on invalid
times.

Fixes #580810
2009-06-05 13:47:15 +02:00
Jordi Mas
cfbb046f1e ffmpeg: make elements reusable after registry rescan
If the same instance of the plugin is asked to be initialised more that once,
instances after the first one do not register the elements properly and the
elements become not usable.

For example, if you call gst_update_registry (), is not possible to create
elements after the call since the plugin is asked to be initialised again and
does not register the elements.

Fixes #584291
2009-06-05 13:19:03 +02:00
Wim Taymans
686aadaf01 ffmpeg: properly integrate timestamp handling
The patch from Bug #580796 hacked around existing infrastructure to handle
timestamps as DTS (as in all AVI files) causing the logic to be disabled.

Properly hook the timestamp handling into the existing infrastructure to handle
these cases too, partially reverting a26b94d92c
and moving some stuff around.

Refixes #580796.
2009-06-05 12:32:25 +02:00
Wim Taymans
54273a5771 enc: use standard multipass-cache-file
Deprecate the old statsfile property and add a the new standard
mulitpass-cache-file property to match other encoders.
Fixes #583627
2009-05-25 12:36:06 +02:00
Jan Schmidt
81e91e54c1 ffmpeg: Don't add sink pad template to the muxers when not needed.
If the set of caps for either audio or video is completely empty, skip
adding that pad template to the class. Some muxers only support audio-only
or video-only and otherwise end up with EMPTY caps in the pad template.
2009-05-20 10:59:47 +01:00
Wim Taymans
ff2f62ac8a ffenc: avoid malloc more for audio encoders
Use _adapter_peek() to retrieve data so that we can reuse previously
allocated memory.
2009-05-13 23:18:50 +02:00
Edward Hervey
9fdc5a5d64 gstffmpegdec: demote mpeg2 video decoding back to MARGINAL. Fixes #574461 2009-05-13 19:35:32 +02:00
Sebastian Dröge
63a4d4f332 Add mapping for VQF caps 2009-05-13 16:21:36 +02:00
Edward Hervey
ee5a964293 gstffmpegdec: Don't forget to copy over the reordered_opaque in our buffers.
This is to be on-par with the default get_buffer() implementation (which is
detailed in libavcodec/utils.c).
2009-05-13 13:47:58 +02:00
Vanista
a26b94d92c gstffmpegdec: Handle out-of-order frames. Fixes #580796 2009-05-13 12:45:38 +02:00
Wim Taymans
e2dd913f4c ffenc: make the output buffer big enough
The ffmpeg docs say that the output buffer should at least be
FF_MIN_BUFFER_SIZE (which is overly large, but anyways).
2009-05-13 11:21:35 +02:00
Wim Taymans
25b41829b9 ffmpeg: rewrite audio encoders.
Rewrite the audio encoders to use the right API functions of ffmpeg. Also get
rid of the handrolled cache and use adapter instead for formats that require
fixed frame_size as input.
2009-05-13 01:04:30 +02:00
Wim Taymans
92b8a5adc9 codecmap: revert bogus commit.
We don't need to set a default frame_size, ffmpeg has set this value to 0 to
inform us that there is a fixed relation between the amount of input samples
and output samples. Now we only need to implement handling that fact.
2009-05-12 22:20:49 +02:00
Edward Hervey
a0c7a2d0c5 ffmpegcfg: Expose two more CODEC_FLAG. 2009-05-12 18:13:16 +02:00
Edward Hervey
f384b2a006 gstffmpegdec: No, really, we don't want the VDPAU decoders.
They've changed the names, keeping the old ones til we switch upstream
revision.
2009-05-12 15:30:10 +02:00
Sebastian Dröge
b9617cac31 ffdec: Update rank of ffdec_mpeg2video to SECONDARY to make it the default
ffdec_mpeg2video is much faster, fixes bug #574461.
2009-05-12 11:21:01 +02:00
Edward Hervey
fb613191ae gstffmpegdec: Implement interlaced support.
ffmpeg only tells us on a per-decoded-buffer basis if the stream is
interlaced or not. When we see a change, we force negotiation.

We can't detect that in our get_buffer() (when doing downstream allocation),
because at that point the interlaced flags aren't set on the outgoing
buffer.
2009-05-12 11:16:43 +02:00
Edward Hervey
36bdeea0e7 win32: Fix non-portable printf format. 2009-05-09 10:57:55 +02:00
David Hoyt
da8d4abad2 Use av_{i,o}format_next instead of the private next field
This fixes compilation with MSVC where the initializer variables
are aliased to different names. Fixes bug #576126.
2009-05-07 12:57:10 +02:00
Sebastian Dröge
c2a9ee9264 ffenc: Implement preset interface 2009-05-04 13:00:49 +02:00
Thiago Santos
9133bb9ba2 ffenc: Send error upstream when gst_pad_push return is different from GST_FLOW_OK 2009-04-23 14:35:10 -03:00
Edward Hervey
f07223fd24 gstffmpegenc: Don't change properties once opened. Fixes #570815
Based on a patch by Tristan Matthews <le businessman at gmail dot com>
2009-04-21 18:38:03 +02:00
Janin Kolenc
ec5ad411a5 gstffmpegcfg: Add H263 to the list of mpeg property-compatible codecs. 2009-04-21 18:34:22 +02:00
Edward Hervey
57e66c5a22 Make sure we provide ffmpeg with 128bit-aligned data.
Add a new function new_aligned_buffer() which creates a GstBuffer of
the requested size/caps, with the memory being allocated/freed by ffmpeg's
av_malloc/av_free which guarantees properly aligned memory.
Added a can_allocate_aligned internal property which we use to figure out
whether downstream can provide us with 128bit aligned buffers.
2009-04-21 18:28:54 +02:00
Edward Hervey
ea76b43723 Reverting Jan's fix-the-buildbot commit
This reverts commit 5465d40b8d.
2009-04-19 14:07:58 +02:00
Jan Schmidt
5465d40b8d build: Deliberately break the build, temporarily.
This is to force the buildbots to run autogen.sh one time. I can't
figure out a more elegant way.
2009-04-19 02:42:20 +01:00
Edward Hervey
ae018718d4 gstffmpegdec: Really fix the arguments this time.
I blame compilers who can't figure out there's the wrong number of arguments
for the given print format :)
2009-04-18 09:08:39 +02:00
Edward Hervey
199d95c390 gstffmpegdec: Fix build on macosx.
The arguments were in the wrong order (and therefore the types were wrong).
2009-04-18 08:50:12 +02:00
Wim Taymans
010871cb77 ffmpegdec: resize padding buffer when it's small
Only resize the padding buffer when the size is too small, when it's just right,
we don't need to call realloc.
2009-04-17 19:07:26 +02:00
Wim Taymans
11db4588a6 ffmpeg: add default frame_size for g726
Without a frame_size configured in the context, the ffmpeg encoders do nothing.
Since the G726 does not configure a size itself, we set ourselves a frame_size
that corresponds to 20ms of audio, which is a reasonable default.
2009-04-17 16:27:09 +02:00
Edward Hervey
cbea9841ec gstffmpegutils: Add the files :) 2009-04-16 11:00:46 +02:00
Edward Hervey
cc7ce2639c Move all non-codecmap-related methods to a new file.
We were starting to get too much unrelated code in there. This makes it
a bit easier to maintain.
2009-04-15 22:33:16 +02:00
Edward Hervey
55336b1c5c gstffmpeg.c: Fix the description of the plugin. 2009-04-15 22:14:09 +02:00
Edward Hervey
05a1470151 gstffmpeg.c: Point to the new ffmpeg website (ffmpeg.org). 2009-04-15 22:11:33 +02:00
Edward Hervey
f3c1a56a60 The proper spelling is 'FFmpeg'. 2009-04-15 22:11:10 +02:00
Edward Hervey
d39ad81ad7 gstffmpegmux: Use the AVFormat long_name in our descriptions.
This is the same behaviour we use in the demuxers.
2009-04-15 22:04:02 +02:00
Edward Hervey
9b8a99761a Disable more fake codecs (raw audio). 2009-04-15 21:56:00 +02:00
LRN
2b25dbe12e ffdec: copy input offsets to output buffers
Copy the incomming offsets to the outgoing buffers.
Fixes 578278.
2009-04-10 00:19:50 +02:00
Janin Kolenc
a44f5b4df3 ffenc: Add support for I-frame request.
Add request for I-frame request using GstForceKeyUnit event.
Fixes #575709.
2009-03-25 12:51:55 +01:00
Sebastian Dröge
3fcef3b6a7 ffmux: Actually set caps on the srcpad instead of working with NULL caps 2009-03-23 14:07:06 +01:00
Edward Hervey
7ca2836193 Take into account ticks_per_frame for framerate calculation. Fixes #575759 2009-03-17 23:45:34 +01:00
Edward Hervey
983d2f2b36 Re-enable amr muxer. It's a muxer after all. Fixes #575664 2009-03-17 11:51:28 +01:00
Edward Hervey
59796dd0bc gstffmpegdec: Disable vdpau decoders. Fixes #573400 2009-03-11 13:25:40 +01:00
Edward Hervey
2df7d3e960 pixfmt: Stop using PIX_FMT that were marked as deprecated 3 years ago.
It still worked... until the 0.5 ffmpeg release, which made those defines unused.

See the bottom of libavutil/pixfmt.h for more details.
2009-03-11 12:56:29 +01:00
Edward Hervey
45ec23e37c codecmapping: Fix caps for ATRAC3. Fixes #574663 2009-03-10 21:14:21 +01:00
Edward Hervey
1e689f057f Disable exposing decoder/encoder using external library. Fixes #574746 2009-03-10 21:11:43 +01:00
Edward Hervey
ca1321b224 blacklist bogus demuxer/muxer/typefind. Fixes #567336 and #574814 2009-03-10 21:05:52 +01:00
Edward Hervey
8cfa2c4314 gstffmpegdec: Use 64bit scaling function to avoid overflows detected in some situations. 2009-03-09 18:18:24 +01:00
Edward Hervey
146aab9dcb demux: If the demuxer isn't initialized yet, forward serialized events without waiting.
We do this, because the demuxer is initialized in the loop function. If it's not
initialized yet, that means the loop hasn't been entered... and therefore the
PIPE GCond will never be signalled.
2009-03-09 15:09:10 +01:00
Edward Hervey
f8e3a0007f demuxers: Blacklist push-mode for avformat demuxers which aren't reliable in push-mode.
Currently, only one is blacklisted : ffdemux_ape. This has been confirmed by
ffmpeg developers.
2009-03-09 13:46:06 +01:00
Edward Hervey
3f34bf8ef4 demuxers: Add more debugging 2009-03-09 13:45:22 +01:00
Edward Hervey
cc9dace674 gstffmpegcodecmap: Add proper caps for Fraps video codec 2009-03-09 10:07:39 +01:00
Edward Hervey
98167578c4 ffmpegdec: Make sure we provide 16 byte aligned data to ffmpeg. Fixes #572863
We simply allocate the memory using ffmpeg's av_malloc which provides us
with properly memalign'ed data.
This avoids write-outside-of-bounds when sse/altivec code is being used.
2009-03-06 17:37:51 +01:00
Edward Hervey
df6fb6867e ffaudioresample: Add padding to output buffer. Fixes #573649
The internal resampling functions seem to require a slightly bigger buffer
for output than what we require. Therefore we give it an extra 64bytes (although
16 should have been enough).
2009-03-06 12:47:12 +01:00
Tim-Philipp Müller
c389f49295 ffmpegdec: post an error message on the bus when decoding fails
We should post a STREAM DECODE error message on the bus when we return
GST_FLOW_ERROR, otherwise the user ends up seeing an ugly internal flow
error message, which isn't very nice.
2009-03-06 11:01:55 +00:00
Edward Hervey
eeffd7b87f gstffmpegdec: Set the rank of the AAC decoder to NONE.
It will stay this way until the ffmpeg aac decoder can report before decoding
whether it can handle a given stream or not.
2009-03-05 12:09:32 +01:00
Damien Lespiau
ac82da060a Make bz2 requirement optional. Fixes #564867 2009-03-05 09:10:37 +01:00
Jordi Mas
c7458545f3 gstffmpegmux: Expose the 'preload' and 'maxdelay' properties, add dvd mux mapping.
Fixes #570975
2009-03-05 08:52:11 +01:00
Edward Hervey
8dcbe4f7e8 codecmap. The VC1 decoder can also handle the Advanced Profile.
Fixes #565269
2009-03-05 07:48:24 +01:00
Tim-Philipp Müller
30805cd2c4 ffdec: fix build 2009-03-04 20:58:08 +00:00
Edward Hervey
9eb48ddcda gstffmpegdec: Abort on first failure by AAC decoder. Fixes #566250.
The problem is that the ffmpeg aac decoder fails... but still accepts
the following buffers as if nothing happened. But because some things
were not properly set in the internal code, all hell breaks loose.
2009-03-04 21:10:22 +01:00
Edward Hervey
ec1ff94e7b gstffmpegdec: Bring the real decoders up to GST_RANK_PRIMARY.
They have proven by now that they're more reliable than the
-bad real wrapper plugins.
2009-03-04 20:04:25 +01:00
Sebastian Dröge
778df9cae0 ffmpeg: Don't register the MXF typefinder, we have our own in -base 2009-03-04 12:25:34 +01:00
Sebastian Dröge
b50cc13487 ffmpeg: mxf_d10 is application/mxf too, it only specifies the used mapping 2009-03-04 12:24:47 +01:00
Edward Hervey
269698f020 ffmpegmux: Use information from AVOutputFormat to expose more muxers.
AVOutputFormat does *NOT* contain the full list of codecs a muxer can handle,
but does contain the recommended audio and video codecs. Therefore we use that
information to expose more muxers, until AVOutputFormat contains a list of
*ALL* compatible codecs.
2009-02-27 09:40:03 +01:00
Sebastian Dröge
87494eb949 And remove unused variable 2009-02-22 19:44:12 +01:00
Sebastian Dröge
0a697e42d1 Remove unreachable code 2009-02-22 19:43:19 +01:00
Sebastian Dröge
6fc19a2c49 Cast const GstBuffer * to GstBuffer * before unreffing 2009-02-22 19:40:51 +01:00
Edward Hervey
de4496b274 codecmap: map more codecs 2009-02-18 19:06:52 +01:00
Sebastian Dröge
9f912aa69e Don't register ASS/SSA typefinder 2009-02-05 17:19:20 +01:00
Edward Hervey
9fc91546ea Only use valid SampleFormat for audio encoders/decoders.
For a given AVCodec, when the sample_fmts field is non-NULL, that means that
that codec can only handle a specific set of SampleFormat.
With this patch, we now look for its presence and create the proper pad template
caps.
Fixes #569441
2009-01-29 07:48:19 +01:00
Edward Hervey
89c3c79d5e Differentiate between "no more data" from "IO failure" when reading.
Where no more data is available, av_read_frame just returns an error code
instead of making the difference between "I am not returning anything because
we finished reading" and "I am not returning anything because the underlying
read failed".

We differentiate between the two by looking at whether we outputted any
data previously or not.
2009-01-27 15:59:25 +01:00
Edward Hervey
965f23f4f1 Implement push-based support for demuxers
Fixes #392534
2009-01-27 11:39:18 +01:00
Edward Hervey
91ac27e6de Add support for AVSEEK_SIZE in seek handler. This should make demuxers work again (sigh) 2009-01-26 18:21:50 +01:00
Sebastian Dröge
0376e7049a Add MP1 and ADPCM IMA/ISS variant 2009-01-24 17:59:11 +01:00
Dejan Sakelšak
2742ccf931 ext/ffmpeg/gstffmpegcodecmap.c: Narrow down the allowed channels and sample rates for AMR.
Original commit message from CVS:
Patch by: Dejan Sakelšak <sakdean at gmail dot com>
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ff_aud_caps_new):
Narrow down the allowed channels and sample rates for AMR.
Fixes #566647.
2009-01-05 18:08:20 +00:00
Edward Hervey
7342d67f97 ext/ffmpeg/gstffmpegcodecmap.c: Add mapping for IMC and MLP audio codecs.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps):
Add mapping for IMC and MLP audio codecs.
2008-12-30 15:59:58 +00:00
Sebastian Dröge
01c49178c0 ffmpegrev: Updating ffmpeg SVN revision to r16304 and update to the corresponding swscale snapshot.
Original commit message from CVS:
* ffmpegrev:
Updating ffmpeg SVN revision to r16304 and update to the corresponding
swscale snapshot.
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_caps_to_codecid):
Enable the Real Video 3.0 decoder.
2008-12-24 08:09:53 +00:00
Edward Hervey
3d089f4862 ext/ffmpeg/gstffmpegcodecmap.*: Add mapping for EAC3 and QCELP audio codecs.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ff_aud_caps_new),
(gst_ffmpeg_codecid_to_caps), (gst_ffmpeg_smpfmt_to_caps),
(gst_ffmpeg_codectype_to_caps), (gst_ffmpeg_caps_to_smpfmt),
(gst_ffmpeg_caps_to_codecid), (av_smp_format_depth):
* ext/ffmpeg/gstffmpegcodecmap.h:
Add mapping for EAC3 and QCELP audio codecs.
Add conversion functions for all available audo SampleFormat.
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_open),
(gst_ffmpegdec_setcaps), (gst_ffmpegdec_negotiate),
(clip_audio_buffer), (gst_ffmpegdec_audio_frame):
Remove assumptions that we can only handle stereo 16bit signed integer
audio, and store the depth locally.
2008-12-17 12:05:12 +00:00
Stefan Kost
0222971453 ext/ffmpeg/gstffmpegmux.c: Renaming tagsetter_flush to _reset_tags().
Original commit message from CVS:
* ext/ffmpeg/gstffmpegmux.c:
Renaming tagsetter_flush to _reset_tags().
2008-12-16 15:58:05 +00:00
Stefan Kost
c5102d2045 Fix tag merging. Use tagsetter and not internal copies. Depend on
Original commit message from CVS:
* configure.ac:
* ext/ffmpeg/gstffmpegmux.c:
Fix tag merging. Use tagsetter and not internal copies. Depend on
CVS core and use new API to flush.
2008-12-16 14:24:05 +00:00
Sebastian Dröge
923580b14f ext/ffmpeg/gstffmpegcodecmap.c: If no channel layout is provided don't set a NONE layout in the case of >2 channels b...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ff_channel_layout_to_gst):
If no channel layout is provided don't set a NONE layout in the
case of >2 channels but instead let audioconvert add some default
layout.
2008-12-13 08:01:45 +00:00
Sebastian Dröge
616c0eb07f ext/ffmpeg/: Set the channel layout if it's exposed by the decoder.
Original commit message from CVS:
* ext/ffmpeg/Makefile.am:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ff_channel_layout_to_gst),
(gst_ff_aud_caps_new):
* ext/ffmpeg/gstffmpegcodecmap.h:
Set the channel layout if it's exposed by the decoder.
Fixes bug #548002.
2008-12-13 07:55:40 +00:00
Edward Hervey
4540e7d752 ext/ffmpeg/gstffmpegdec.c: Fix check for memory to free.
Original commit message from CVS:
reviewed by: Edward Hervey  <edward.hervey@collabora.co.uk>
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_finalize):
Fix check for memory to free.
Fixes #560644
2008-12-03 17:43:45 +00:00
Wim Taymans
97e7c6ecee ext/ffmpeg/gstffmpegmux.c: Copy the codec aspect ratio to the stream, ffmpeg expects them to be the same. Fixes #560305.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_setcaps):
Copy the codec aspect ratio to the stream, ffmpeg expects them to be the
same. Fixes #560305.
2008-11-11 17:18:46 +00:00
Sebastian Dröge
7ce8ab7ad4 configure.ac: Fix typo: libswcale -> libswscale for the pkg-config check.
Original commit message from CVS:
* configure.ac:
Fix typo: libswcale -> libswscale for the pkg-config check.
* ext/libswscale/gstffmpegscale.c:
Fix include path, newer ffmpeg installs the headers for all
libraries into separate directories. Fixes bug #560137.
2008-11-10 12:37:46 +00:00
Wim Taymans
28cc187f59 ext/ffmpeg/gstffmpegcodecmap.c: Initialize some more variables.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_avpicture_fill):
Initialize some more variables.
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_setcaps),
(alloc_output_buffer):
Disable direct rendering for h264, some functions just seem to read from
invalid memory.
2008-11-07 11:43:42 +00:00
Wim Taymans
4ad12e4818 ext/ffmpeg/: Add G_PARAM_STATIC_STRINGS to avoid numerous strcpy calls.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcfg.c: (gst_ffmpeg_cfg_init):
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_class_init),
(gst_ffmpegdec_init), (gst_ffmpegdec_setcaps),
(gst_ffmpegdec_get_buffer), (get_output_buffer),
(gst_ffmpegdec_set_property), (gst_ffmpegdec_get_property):
Add G_PARAM_STATIC_STRINGS to avoid numerous strcpy calls.
2008-11-06 11:47:40 +00:00
Wim Taymans
fe4e398482 ext/ffmpeg/gstffmpegdec.c: Enable direct rendering.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_setcaps),
(gst_ffmpegdec_get_buffer), (get_output_buffer):
Enable direct rendering.
Add some more debug info about image strides.
2008-11-05 17:05:46 +00:00
Wim Taymans
0f96b4dfc2 ext/ffmpeg/gstffmpegcodecmap.c: Don't convert caps to strings when we don't have debugging enabled.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_pixfmt_to_caps),
(gst_ffmpeg_smpfmt_to_caps), (gst_ffmpeg_caps_to_codecid),
(gst_ffmpeg_avpicture_fill):
Don't convert caps to strings when we don't have debugging enabled.
2008-11-05 12:34:58 +00:00
Mark Nauwelaerts
51e0b9b509 ext/ffmpeg/gstffmpegcodecmap.c: Fix regression in template caps limitations; expose more than 2 channels in both src ...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ff_aud_caps_new):
Fix regression in template caps limitations;
expose more than 2 channels in both src and sink template
if so supported.
2008-11-04 18:53:01 +00:00
Stefan Kost
0165bad2a8 ext/: Don't install static libs for plugins. Fixes #550851 for -ffmpeg.
Original commit message from CVS:
* ext/ffmpeg/Makefile.am:
* ext/libpostproc/Makefile.am:
* ext/libswscale/Makefile.am:
Don't install static libs for plugins. Fixes #550851 for -ffmpeg.
2008-11-04 12:49:40 +00:00
Alexis Ballier
42cf6d213f Update ffmpeg/swscale snapshot to the latest revision and adjust to API changes. Fixes bug #556405.
Original commit message from CVS:
Based on a patch by: Alexis Ballier <aballier at gentoo dot org>
* configure.ac:
* ext/ffmpeg/gstffmpeg.c:
* ext/ffmpeg/gstffmpeg.h:
* ext/ffmpeg/gstffmpegaudioresample.c:
* ext/ffmpeg/gstffmpegcfg.c: (gst_ffmpeg_flags_get_type),
(gst_ffmpeg_cfg_init):
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
(gst_ffmpeg_caps_to_pixfmt), (gst_ffmpeg_caps_with_codecid):
* ext/ffmpeg/gstffmpegcodecmap.h:
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_setcaps),
(gst_ffmpegdec_register):
* ext/ffmpeg/gstffmpegdeinterlace.c:
* ext/ffmpeg/gstffmpegdemux.c:
* ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_getcaps),
(gst_ffmpegenc_setcaps), (gst_ffmpegenc_register):
* ext/ffmpeg/gstffmpegmux.c:
* ext/ffmpeg/gstffmpegprotocol.c: (gst_ffmpegdata_seek):
* ext/libpostproc/gstpostproc.c:
* ffmpegrev:
Update ffmpeg/swscale snapshot to the latest revision and adjust
to API changes. Fixes bug #556405.
Require libavutil for swscale too when building with an external
ffmpeg and fix includes for external ffmpeg.
2008-10-30 12:05:45 +00:00
Robin Stocker
e6425e766d ext/ffmpeg/gstffmpegdec.c: If both, the decoder and the demuxer, provide a non-1:1 PAR prefer the one of the demuxer ...
Original commit message from CVS:
Patch by: Robin Stocker <robin at nibor dot org>
* ext/ffmpeg/gstffmpegdec.c:
(gst_ffmpegdec_add_pixel_aspect_ratio):
If both, the decoder and the demuxer, provide a non-1:1 PAR
prefer the one of the demuxer instead of the one of the decoder.
Fixes bug #556336.
2008-10-15 11:28:05 +00:00
Mark Nauwelaerts
cc082f9b32 ext/ffmpeg/: Add some more width/height/channels/rate limitations to caps to cater for more automagic negotiation. A...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ff_vid_caps_new),
(gst_ff_aud_caps_new), (gst_ffmpeg_codecid_to_caps),
(gst_ffmpeg_codectype_to_caps):
* ext/ffmpeg/gstffmpegcodecmap.h:
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_negotiate),
(gst_ffmpegdec_register):
* ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_getcaps),
(gst_ffmpegenc_register):
Add some more width/height/channels/rate limitations to caps
to cater for more automagic negotiation.  Addresses #532422.
2008-10-08 14:20:37 +00:00
Mark Nauwelaerts
d0877c48e4 Rewrite ffvideoscale using libswscale and put into a separate plugin.
Original commit message from CVS:
* configure.ac:
* ext/Makefile.am:
* ext/libswscale/Makefile.am:
* ext/libswscale/gstffmpegscale.c:
(gst_ffmpegscale_method_get_type), (gst_ffmpegscale_base_init),
(gst_ffmpegscale_class_init), (gst_ffmpegscale_init),
(gst_ffmpegscale_reset), (gst_ffmpegscale_finalize),
(gst_ffmpegscale_caps_remove_format_info),
(gst_ffmpegscale_transform_caps), (gst_ffmpegscale_fixate_caps),
(gst_ffmpegscale_get_unit_size), (gst_ffmpeg_caps_to_pixfmt),
(gst_ffmpegscale_fill_info), (gst_ffmpegscale_set_caps),
(gst_ffmpegscale_transform), (gst_ffmpegscale_handle_src_event),
(gst_ffmpegscale_stop), (gst_ffmpegscale_set_property),
(gst_ffmpegscale_get_property), (gst_ffmpeg_log_callback),
(plugin_init):
Rewrite ffvideoscale using libswscale and put into a separate plugin.
Fixes #504056.
2008-10-08 13:11:54 +00:00
Damien Lespiau
b706c481d3 Fix cross compilation and add support for compilation with mingw32.
Original commit message from CVS:
Patch by: Damien Lespiau <damien dot lespiau at gmail dot com>
* configure.ac:
* ext/ffmpeg/Makefile.am:
Fix cross compilation and add support for compilation with mingw32.
Fixes bug #542216.
2008-10-08 11:24:26 +00:00
Wim Taymans
5211c2072a ext/ffmpeg/gstffmpegcodecmap.c: Add some debug that revealed that the escape code was disabled...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (nal_escape), (copy_config),
(gst_ffmpeg_caps_with_codecid):
Add some debug that revealed that the escape code was disabled...
2008-09-04 15:50:03 +00:00
Wim Taymans
d16e6f1ecc ext/ffmpeg/gstffmpegdec.c: If we have a parser and we did not consume any of the bytes of a new buffer, make sure we ...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_frame),
(gst_ffmpegdec_chain):
If we have a parser and we did not consume any of the bytes of a new
buffer, make sure we submit the buffer again with its original timestamp
instead of a -1 timestamp. Fixes various h264 cases with reordered
frames.
If we have a discont and a timestamp but the first buffer after the
discont did not produce any data, make sure we set the timestamp on the
next buffer instead. Fixes initial timestamp on realaudio in many cases.
2008-09-04 14:08:50 +00:00
Wim Taymans
5162694c1e ext/ffmpeg/gstffmpegcodecmap.c: Escape the codec_data for h264 before we put it in the extra_data because ffmpeg expe...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (nal_escape), (copy_config),
(gst_ffmpeg_caps_with_codecid):
Escape the codec_data for h264 before we put it in the extra_data
because ffmpeg expects it escaped.
2008-09-04 13:54:58 +00:00
Edward Hervey
bf1316819f ext/ffmpeg/gstffmpegcodecmap.c: Give the TrueSpeech audio codec a proper caps. This is now synchronized with libriff ...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps):
Give the TrueSpeech audio codec a proper caps. This is now synchronized
with libriff in -base cvs.
2008-09-03 14:06:45 +00:00
Edward Hervey
d16582feb6 ext/ffmpeg/gstffmpegdec.c: Finalizing a decoder that was never used shouldn't trigger an assertion.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_finalize),
(gst_ffmpegdec_get_buffer), (gst_ffmpegdec_frame):
Finalizing a decoder that was never used shouldn't trigger an assertion.
Add debug messages for the two other g_assert_if_reached().
2008-08-29 09:59:29 +00:00
Edward Hervey
459ba46c22 ext/ffmpeg/gstffmpegcodecmap.c: Instead of marking all audio decoders/encoders as accepting up to 6 channels, we whit...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ff_aud_caps_new):
Instead of marking all audio decoders/encoders as accepting up to 6
channels, we white-list those for which we are sure they can handle
those 6 channels.
Fixes #549799
2008-08-29 09:53:29 +00:00
Michael Smith
7d4c7bf635 ext/ffmpeg/gstffmpegdemux.c: gst_pad_template_new() takes ownership of caps; ref them beforehand since we want to kee...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdemux.c:
gst_pad_template_new() takes ownership of caps; ref them beforehand
since we want to keep using them afterwards.
2008-08-29 00:27:28 +00:00
Edward Hervey
35168b4a41 ext/ffmpeg/gstffmpegcodecmap.c: ffmpeg audio decoders can now do up to 6 channels... and actually expose it properly....
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ff_aud_caps_new):
ffmpeg audio decoders can now do up to 6 channels... and actually
expose it properly. Don't expect any channel mapping though.
2008-08-28 18:03:26 +00:00