Commit graph

120 commits

Author SHA1 Message Date
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
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
7162290afe ffmpegdemux: Use av_free_packet.
Fixes #611782
2010-03-04 08:59:19 +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
Alessandro Decina
7c91fb4cf4 Fix compiler warnings under OS X. 2010-01-22 11:43:59 +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
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
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
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
Tim-Philipp Müller
048b0145a8 ffmpegdemux: post tags after the initial newsegment event 2009-07-01 10:45:32 +01: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
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
f3c1a56a60 The proper spelling is 'FFmpeg'. 2009-04-15 22:11:10 +02:00
Edward Hervey
ca1321b224 blacklist bogus demuxer/muxer/typefind. Fixes #567336 and #574814 2009-03-10 21:05:52 +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
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
9f912aa69e Don't register ASS/SSA typefinder 2009-02-05 17:19:20 +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
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
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
Wim Taymans
4cd2785756 ext/ffmpeg/gstffmpegdemux.c: Set flv demuxer to rank NONE, we have a better, working demuxer in -bad and we don't wan...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_register):
Set flv demuxer to rank NONE, we have a better, working demuxer in -bad
and we don't want any bug reports about this one. Fixes #534783.
2008-05-26 10:25:59 +00:00
Sebastian Dröge
2b248e29ff Use av_picture_copy() instead of libswscale to copy pictures. This removes the swscale dependency and is faster. Fixe...
Original commit message from CVS:
Patch by:
Hans de Goede <j dot w dot r degoede at hhs dot nl>
* configure.ac:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_avpicture_fill):
* ext/ffmpeg/gstffmpegcodecmap.h:
* ext/ffmpeg/gstffmpegdec.c: (get_output_buffer):
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_loop):
* ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_collected):
Use av_picture_copy() instead of libswscale to copy pictures. This
removes the swscale dependency and is faster. Fixes bug #534390.
2008-05-26 07:39:19 +00:00
Tim-Philipp Müller
a24ce03f75 ext/ffmpeg/gstffmpegdemux.c: Explicitly disable 'raw' mpeg-ts typefinder as well; better debug logging for the gst-ff...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_type_find),
(gst_ffmpegdemux_register):
Explicitly disable 'raw' mpeg-ts typefinder as well; better debug logging
for the gst-ffmpeg typefinders. (#533708).
2008-05-25 21:55:24 +00:00
Tim-Philipp Müller
b7e4ff666a ext/ffmpeg/gstffmpegdemux.c: Implement SEEKING query, so players such as totem can query seekability. Fix a comment t...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_src_query_list),
(gst_ffmpegdemux_src_query), (gst_ffmpegdemux_get_stream),
(gst_ffmpegdemux_open):
Implement SEEKING query, so players such as totem can query
seekability. Fix a comment typo or two.
2008-05-25 21:48:39 +00:00
Sebastian Dröge
0d7adba925 Fix build with (Debian's) system ffmpeg. Fixes bug #532803.
Original commit message from CVS:
* configure.ac:
* ext/ffmpeg/gstffmpegcodecmap.c:
* ext/ffmpeg/gstffmpegdemux.c:
* ext/libpostproc/gstpostproc.c:
Fix build with (Debian's) system ffmpeg. Fixes bug #532803.
2008-05-13 15:07:25 +00:00
Sebastian Dröge
1ffe547e23 ext/ffmpeg/: Add support for MusePack StreamVersion 7 and disable the StreamVersion 8 typefinder. Fixes bug #510745.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
(gst_ffmpeg_formatid_to_caps), (gst_ffmpeg_caps_to_codecid),
(gst_ffmpeg_get_codecid_longname):
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_register):
Add support for MusePack StreamVersion 7 and disable the StreamVersion
8 typefinder. Fixes bug #510745.
2008-04-19 20:27:25 +00:00
Sebastian Dröge
b83d37033a ext/ffmpeg/: Add support for Monkey's Audio (APE). Fixes bug #518033.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
(gst_ffmpeg_caps_with_codecid), (gst_ffmpeg_formatid_to_caps),
(gst_ffmpeg_caps_to_codecid), (gst_ffmpeg_get_codecid_longname):
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_register):
Add support for Monkey's Audio (APE). Fixes bug #518033.
2008-04-19 19:43:54 +00:00
Edward Hervey
d5df61ccb7 ext/ffmpeg/gstffmpegdemux.c: Don't try handling a buffer if downstream allocation failed.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_loop):
Don't try handling a buffer if downstream allocation failed.
Avoids crashes and Fixes #515205
2008-02-08 15:12:03 +00:00
Sebastian Dröge
94b1421fa2 ext/ffmpeg/gstffmpegdemux.c: Don't register typefinders for which we have better replacements in base. Fixes bug #510...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_register):
Don't register typefinders for which we have better replacements
in base. Fixes bug #510985.
2008-01-22 11:10:57 +00:00
Sebastian Dröge
c8c3da525b ext/ffmpeg/: Don't register the WavPack demuxer and decoder. They don't work, we have better ones and the output of t...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_register):
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_register):
Don't register the WavPack demuxer and decoder. They don't work,
we have better ones and the output of the demuxer/input of the
decoder is in a different format than what audio/x-wavpack of the
wavpack plugin is (it seems that the demuxer strips of the wavpack
headers from every frame).
This fixes typefinding of Wavpack files again, as the ffmpeg
typefinder was preffered for some reason and gave
application/x-gst_ff-wv instead of audio/x-wavpack.
2008-01-04 22:14:50 +00:00
Edward Hervey
4b12fdb186 ext/ffmpeg/gstffmpegdemux.c: Fix demuxer to stop properly (emit an error message on the bus) if no pads are linked. U...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_loop):
Fix demuxer to stop properly (emit an error message on the bus) if no
pads are linked. Use aggregated flow return values a bit more.
2007-12-18 10:05:28 +00:00
Sebastian Dröge
a0bae2f656 ext/ffmpeg/: Add GIF (animations and single images) decoding and encoding support.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
(gst_ffmpeg_formatid_get_codecids),
(gst_ffmpeg_get_codecid_longname):
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_loop),
(gst_ffmpegdemux_register):
* ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_collected),
(gst_ffmpegmux_register):
Add GIF (animations and single images) decoding and encoding support.
Fixes #503249.
2007-12-17 20:31:35 +00:00
Edward Hervey
f6186655c5 Merging GST_FFMPEG_NO_MIRROR branch to trunk
Original commit message from CVS:
Merging GST_FFMPEG_NO_MIRROR branch to trunk
2007-12-17 12:43:06 +00:00
Edward Hervey
f85c737410 ext/ffmpeg/: gst-indent cleanup.
Original commit message from CVS:
* ext/ffmpeg/gstffmpeg.c: (gst_ffmpeg_avcodec_open),
(gst_ffmpeg_avcodec_close), (gst_ffmpeg_av_find_stream_info),
(gst_ffmpeg_log_callback), (plugin_init):
* ext/ffmpeg/gstffmpegcfg.c: (gst_ffmpeg_mb_decision_get_type),
(gst_ffmpeg_flags_get_type), (gst_ffmpeg_cfg_init),
(gst_ffmpeg_cfg_codec_has_pspec),
(gst_ffmpeg_cfg_install_property), (gst_ffmpeg_cfg_set_property),
(gst_ffmpeg_cfg_get_property), (gst_ffmpeg_cfg_set_defaults),
(gst_ffmpeg_cfg_fill_context), (gst_ffmpeg_cfg_finalize):
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps):
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_open),
(gst_ffmpegdec_setcaps), (gst_ffmpegdec_save_incoming_values),
(gst_ffmpegdec_get_best_values), (gst_ffmpegdec_video_frame):
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_base_init),
(gst_ffmpegdemux_src_query):
* ext/ffmpeg/gstffmpegenc.c: (ffmpegenc_setup_working_buf),
(gst_ffmpegenc_chain_video), (gst_ffmpegenc_flush_buffers):
* ext/ffmpeg/gstffmpegprotocol.c: (gst_ffmpegdata_open),
(gst_ffmpegdata_peek), (gst_ffmpegdata_read),
(gst_ffmpegdata_write), (gst_ffmpegdata_seek),
(gst_ffmpegdata_close):
gst-indent cleanup.
2007-11-03 16:14:53 +00:00
Yann Gilquin
808f080279 ext/ffmpeg/gstffmpegdemux.c: Don't return FALSE for the LATENCY event but instead forward it upstream. Fixes #482946.
Original commit message from CVS:
Patch by: Yann Gilquin <yann dot gilquin at purplelabs dot com>
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_src_event):
Don't return FALSE for the LATENCY event but instead forward it
upstream. Fixes #482946.
2007-10-05 15:03:21 +00:00
Julien Moutte
4c6045a04f ext/ffmpeg/: Handle buffers with invalid duration correctly even in the case where we have a demuxer AND a decoder fr...
Original commit message from CVS:
2007-07-25  Julien MOUTTE  <julien@moutte.net>

* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_video_frame):
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_loop): Handle
buffers with invalid duration correctly even in the case where
we have a demuxer AND a decoder from ffmpeg linked.
Fixes: #460274.
2007-07-25 15:39:43 +00:00
Jan Arne Petersen
ddbf1ee10c ext/ffmpeg/gstffmpegdemux.c: Use total duration when the individual stream duration is not known.
Original commit message from CVS:
Patch by: Jan Arne Petersen <jpetersen at jpetersen dot org>
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_src_query):
Use total duration when the individual stream duration is not known.
Fixes #375534.
2007-06-05 13:58:30 +00:00
Jan Schmidt
a23a6a9d2a ext/ffmpeg/gstffmpegdemux.c: Reduce the probability of the MPEG-TS typefinder, because there's a better one in recent...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_type_find):
Reduce the probability of the MPEG-TS typefinder, because there's a
better one in recent base releases.
2007-05-21 11:04:11 +00:00
Edward Hervey
cc9a75adcb ext/ffmpeg/: Protect calls to ffmpeg functions that will implicitly call avcodec_open/close with the avcodec mutex.
Original commit message from CVS:
* ext/ffmpeg/gstffmpeg.c: (gst_ffmpeg_av_find_stream_info):
* ext/ffmpeg/gstffmpeg.h:
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_open):
Protect calls to ffmpeg functions that will implicitly call
avcodec_open/close with the avcodec mutex.
Fixes #433245
2007-05-09 15:30:51 +00:00
Michael Smith
357aa01ac6 ext/ffmpeg/gstffmpegdemux.c: Allow ffmpeg typefinders to try and typefind very short (<4kB) files.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_type_find):
Allow ffmpeg typefinders to try and typefind very short (<4kB)
files.
2007-04-20 10:51:37 +00:00
Tim-Philipp Müller
2a3785b2ef ext/ffmpeg/: Don't use GINT_TO_POINTER and GPOINTER_TO_INT with GTypes, this can break horribly if sizeof(GType) happ...
Original commit message from CVS:
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_base_init),
(gst_ffmpegdec_register):
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_base_init),
(gst_ffmpegdemux_register):
* ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_base_init),
(gst_ffmpegenc_register):
* ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_base_init),
(gst_ffmpegmux_register):
Don't use GINT_TO_POINTER and GPOINTER_TO_INT with GTypes, this
can break horribly if sizeof(GType) happens to be bigger than
sizeof(int), because GPOINTER_TO_INT might then chop off some bits
of our GType (the reason this seems to works nevertheless is the
put-current-type-also-as-value-0-into-the-hash-table-as-fallback
hack used in the current code).
In any case, instead of just fixing this, let's not use a hash table
with GTypes here at all. g_type_{set|get}_qdata() seems to do the
job just as well.
2007-02-16 11:48:15 +00:00
Mark Nauwelaerts
5ad0d8bfee ext/ffmpeg/gstffmpegdemux.c: register yuv4mpegpipe demuxer with MARGINAL rank to make it also typically available for...
Original commit message from CVS:
Patch by: Mark Nauwelaerts <manauw@skynet.be>
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_register):
register yuv4mpegpipe demuxer with MARGINAL rank to
make it also typically available for auto-plugging. Fixes #399108.
2007-01-26 12:12:31 +00:00
Mark Nauwelaerts
701144b366 ext/ffmpeg/gstffmpegdemux.c: Check the aggregated return value of pushes downstream to figure out if we really need t...
Original commit message from CVS:
Patch by: Mark Nauwelaerts <manauw@skynet.be>
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_perform_seek),
(gst_ffmpegdemux_aggregated_flow), (gst_ffmpegdemux_get_stream),
(gst_ffmpegdemux_loop):
Check the aggregated return value of pushes downstream to figure out if
we really need to stop the task or not.
2007-01-10 19:55:05 +00:00
Wim Taymans
304641fd78 ext/ffmpeg/: Use codecid as extra parameter when getting caps.
Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_get_palette),
(gst_ffmpeg_set_palette), (gst_ff_vid_caps_new),
(gst_ff_aud_caps_new), (gst_ffmpeg_codecid_to_caps),
(gst_ffmpeg_pixfmt_to_caps), (gst_ffmpeg_smpfmt_to_caps),
(gst_ffmpeg_codectype_to_caps), (gst_ffmpeg_caps_to_pixfmt),
(gst_ffmpeg_caps_with_codecid), (gst_ffmpeg_formatid_to_caps),
(gst_ffmpeg_formatid_get_codecids), (gst_ffmpeg_caps_to_codecid),
(gst_ffmpeg_init_pix_fmt_info), (gst_ffmpeg_avpicture_fill),
(gst_ffmpeg_img_convert):
* ext/ffmpeg/gstffmpegcodecmap.h:
* ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_getcaps),
(gst_ffmpegenc_register):
Use codecid as extra parameter when getting caps.
Restrict H263 caps to allowed sizes for better negotiation.
MP4/3gp can contain AMR-WB as well.
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_register):
Indent.
2007-01-09 14:59:34 +00:00