Commit Graph
100 Commits
Author SHA1 Message Date
Clément BœschandMartin Storsjö e01fba5562 movenc: Add an F4V muxer
F4V is Adobe's mp4/iso media variant, with the most significant
addition/change being supporting other flash codecs than just
aac/h264.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-10-23 11:17:03 +03:00
Clément BœschandClément Bœsch 19c41c6d8e opt: re-enable memleak fix for duplicated options.
The memleak fix in a1bcc76e was causing problems when the original
string wasn't NULL or av_malloc'ed, thus was disabled. It seems the only
OPT_STRING occurence where it needed to be fixed is in ffserver. This
commit fixes that specific problem and so re-enable the original code.
2013-03-13 07:25:16 +01:00
Clément BœschandClément Bœsch 2dd0da787c lavf/mp3enc: make sure the header is valid before writing audio pkt.
An invalid header can lead avpriv_mpegaudio_decode_header() to overread
and/or div by zero.
2012-11-16 14:11:08 +01:00
Clément BœschandClément Bœsch 0e482a8e49 ffserver: fix streams and priv_data memleaks when closing a connection. 2012-11-15 11:52:44 +01:00
Clément BœschandClément Bœsch 26afdbcfc0 ffserver: fix NULL dereference with quoted Stream name. 2012-11-14 10:09:57 +01:00
Clément BœschandClément Bœsch a9ba9268d7 ffserver: prefer av_asprintf over malloc+snprintf for Launch setting. 2012-11-14 10:09:51 +01:00
Clément BœschandClément Bœsch f6f52936be fate/avfilter: honor GPL dependency. 2012-11-13 09:16:26 +01:00
Clément BœschandClément Bœsch c01d1d4ddf http: add -content_type user option. 2012-10-24 22:15:31 +02:00
Clément BœschandClément Bœsch b08273c9ca lavf/mkv: avoid negative ts by default.
This fixes playback in some circumstances (like webm in firefox).
Regression after 2c34367b.

It is also matching the Matroska specifications:
http://matroska.org/technical/specs/notes.html, "The quick eye will
notice that if a Cluster's Timecode is set to zero, it is possible to
have Blocks with a negative Raw Timecode. Blocks with a negative Raw
Timecode are not valid."
2012-10-15 09:19:21 +02:00
Clément BœschandClément Bœsch 208a5d1322 fate/ffprobe: add some stream metadata. 2012-10-08 11:03:27 +02:00
Clément BœschandClément Bœsch f7c46d251c ffserver: fix seeking with ?date=...
Regression since 5f847bf61d.

After this commit, timestamps pushed by FFmpeg won't be relative
anymore, but absolute (based on the date/time at the beginning of the
push). This will allow seeking to work properly. Before this patch, the
seek was done, but ffm timestamps were way smallers than the absolute
requested timestamp (based on a date), so the seek was done, but to the
end of the stream (which was similar to no effect at all).
2012-10-08 09:03:19 +02:00
Clément BœschandClément Bœsch 1e2e2c8095 lavc/h264: move ff_init_cabac_states() from decode_slice() to ff_h264_decode_init().
This fixes one of the potential races spotted by Helgrind.
2012-10-03 15:38:22 +02:00
Clément BœschandClément Bœsch 00e1afd83f fate: add faststart regression test.
Also factorize the common options for the different mov-based tests.

Since the header is now on top in the last generated file, the data
offset in the seek test needed some updates as well.
2012-09-27 08:59:37 +02:00
Clément BœschandClément Bœsch a714150827 lavf/movenc: add faststart option. 2012-09-27 08:59:36 +02:00
Clément BœschandClément Bœsch f379a108a4 lavf/movenc: make mov_write_stco_tag() not use the offset pos for mode64 heuristic.
At the moment, the moov header is written at the end of the file, so we
can use the current offset (which focus on the end of the mdat already
written) to guess if 64-bits offset will be required or not.

Though, the next commits will make possible the writing of this table at
the beginning, so this heuristic can't work. As a consequence, we check
all the values within the potential offset table for any value >
32-bits.
2012-09-27 08:59:36 +02:00
Clément BœschandClément Bœsch e17a2aba25 lavf/movenc: add get_moov_size and use it in fragment code.
This function will be re-used in the following commits.
2012-09-27 08:59:36 +02:00
Clément BœschandClément Bœsch 405ee405c9 ffmpeg: complete mov/mp4 based timebase hack with "f4v" format. 2012-09-21 17:27:57 +02:00
Clément BœschandClément Bœsch 7bc70930dd lavf/movenc: add F4V flavor. 2012-09-21 15:14:11 +02:00
Clément BœschandClément Bœsch aca0f78114 lavf/movenc: add frame rate heuristic for timecode frame rate.
Fixes ticket 1576.
2012-08-08 09:11:26 +02:00
Clément BœschandClément Bœsch 4b365b0868 lavu/timecode: add av_timecode_check_frame_rate(). 2012-08-08 09:11:26 +02:00
Clément BœschandClément Bœsch 6b3484dcbc lavf/mxfenc: better error handling with invalid frame rate. 2012-08-08 09:11:25 +02:00
Clément BœschandClément Bœsch aad737c669 lavf/mxfenc: simplify frame rate checks. 2012-08-08 09:11:25 +02:00
Clément BœschandClément Bœsch e39f6a3a5c Fix misc swapped dot and carriage returns in av_log calls. 2012-08-03 14:58:14 +02:00
Clément BœschandClément Bœsch bc42682749 lavf/movenc: fix invalid free with timecode meta and tmcd data copy.
Fixes ticket 1577.
2012-08-03 14:15:39 +02:00
Clément BœschandClément Bœsch 1f68be4764 timecode: show frame rate when invalid. 2012-08-01 17:36:37 +02:00
Clément BœschandClément Bœsch 20e46aafbd mov: export orphan tmcd track metadata to global format metadata. 2012-06-11 07:40:58 +02:00
Clément BœschandClément Bœsch 1ec23d9c02 mov: copy timecode metadata from tmcd track to the related video stream.
Apple softwares seem not to add a tref for the timecode (the next commit
fixes this issue), but at least FFmpeg does.

This can be used to generate a sample that demonstrates the feature:

    ./ffmpeg -f lavfi -i testsrc    \
             -f lavfi -i mptestsrc  \
             -f lavfi -i rgbtestsrc \
             -map 0 -map 1 -map 2   \
             -metadata:s:0 timecode=00:00:00:12 \
             -metadata:s:2 timecode=01:02:12:20 \
             -t 10 -y out.mov
    ./ffprobe out.mov

The timecode metadata being transmitted to the video streams, it can be
kept while transmuxed/transcoded.
2012-06-11 07:40:26 +02:00
Clément BœschandClément Bœsch 0d96ec19eb mov: parse tref atom. 2012-06-11 07:35:14 +02:00
Clément BœschandClément Bœsch 9fb2e234d0 movenc: add timecode track support. 2012-06-11 07:35:14 +02:00
Clément BœschandClément Bœsch 9846a9c701 riff: add ISMP/timecode tag. 2012-06-11 07:28:26 +02:00
Clément BœschandClément Bœsch c790ae0265 ffmpeg: add missing return carriage in error message. 2012-06-04 09:10:07 +02:00
Clément BœschandClément Bœsch e00b2d284e options: stop after option is found.
This reverts 78da04384a6c22820518706d84631006d31a85ea; it is not
required anymore since the previous commit (these extended checks were
for the -timecode option in both muxers and encoders), and reduces the
diff with the fork.
2012-06-04 07:41:22 +02:00
Clément BœschandClément Bœsch 6b35f1a2a6 timecode: move timecode muxer options to metadata.
Some demuxers set a timecode in the format or streams metadata. The
muxers now make use of this metadata instead of a duplicated private
option.

This makes possible transparent copy of the timecode when transmuxing
and transcoding.

-timecode option for MPEG1/2 codec is also renamed to -gop_timecode. The
global ffmpeg -timecode option will set it anyway so no option change
visible for the user.
2012-06-04 07:41:22 +02:00
Clément BœschandClément Bœsch 735fb8ce59 ffmpeg: remove unused MetadataMap.
This struct was forgotten after
e5df74dc56.
2012-04-06 14:25:35 +02:00
Clément BœschandClément Bœsch e5df74dc56 ffmpeg: remove unused meta_data_maps.
This is unused since a7b5e841ff.
2012-04-06 14:09:48 +02:00
Clément BœschandClément Bœsch 614716f583 mov: do not print string len in handler_name.
The handler name is stored as a pascal string in the QT specs (first
byte is the length of the string), thus leading to an invalid metadata
string export.

Also add a second length check based on the first character to avoid
overwriting an already specified handler_name (it happens with Youtube
videos for instance, the handler_name get masked), or specifying an
empty string metadata.
2012-04-05 17:32:54 +02:00
Clément BœschandClément Bœsch e29f66d64a ffmpeg: fix a few typo. 2012-04-04 11:50:16 +02:00
Clément BœschandClément Bœsch 29679f4a37 aac: reference supported sample rates in encoders. 2012-03-26 22:46:40 +02:00
Clément BœschandClément Bœsch 21d650cb69 ffmpeg: more expressive sample rate automatic selection.
Output now lists the available sample rates with commands like
ffmpeg -f lavfi -i aevalsrc=0 -ar 20000 -y /tmp/out.mp3
2012-03-26 22:46:40 +02:00
Clément BœschandClément Bœsch a67d9cfa58 lavfi: add avfilter_fill_frame_from_{audio_,}buffer_ref(). 2012-03-26 22:46:40 +02:00
Clément BœschandClément Bœsch 9dd649c004 flv: clarify use of video info/cmd frame.
Also add generated key frame in the enum, and doxycomment the existing
ones. Descriptions are directly taken from the public specifications.
2012-03-20 07:53:40 +01:00
Clément BœschandClément Bœsch 4fe5448790 lavfi/drawtext: add 24 hours wrapping option for timecode.
Fixes ticket #1044.
2012-03-12 18:17:02 +01:00
Clément BœschandClément Bœsch aecf0cf5ed doc/examples: add audio decoding/filtering example.
Mostly based on doc/examples/filtering.c. lavfi API is still limited to
"buffer feeding" instead of "frame feeding" at the moment, so this
example code sticks with it.
2012-02-21 16:45:37 +01:00
Clément BœschandClément Bœsch 241f8465d0 lavfi/abuffer: init the data planes with NULL pointers.
Samples buffer ref is allocated and loaded with the uninitialized data
pointers:
     av_asrc_buffer_add_buffer()
  -> av_asrc_buffer_add_samples()
  -> avfilter_get_audio_buffer_ref_from_arrays(data, ...)

...which leads to a crash with at least lavfi/ashowinfo in case of !NULL
(see the for loop while samplesref->data[plane]).
2012-02-21 16:45:34 +01:00
Clément BœschandClément Bœsch 6e6bdeb137 doc: fix channel layout value in abuffer example.
The channel layout must start with 0x, otherwise it is parsed as a
number of channels.
2012-02-20 09:23:44 +01:00
Clément BœschandClément Bœsch cba4e2cbbc pan: fix uninitialized channel_id variable.
Fix broken parsing with pan=2:FL=FR:FR=FL and similar.
2012-02-15 10:26:30 +01:00
Clément BœschandClément Bœsch 95317821ea audioconvert: consistent use of FF_ARRAY_ELEMS for channel_layout_map. 2012-02-15 10:26:25 +01:00
Clément BœschandClément Bœsch 158bd596a6 ffmpeg: move quality parameter to do_video_out() scope.
This make do_video_out() and do_audio_out() consistent. Also simplifies
callers.
2012-02-10 20:13:36 +01:00
Clément BœschandClément Bœsch 63b5e99fab ffmpeg: make use of ret error out in transcode_video(). 2012-02-10 20:13:36 +01:00
Clément BœschandClément Bœsch 086fc4d765 ffmpeg: move filtered_frame to the CONFIG_AVFILTER scope.
This simplifies a bit the #ifdefery.
2012-02-10 20:13:36 +01:00
Clément BœschandClément Bœsch 9303b794b8 ffmpeg: move do_video_stats() above do_video_out().
This avoid a forward declaration.
2012-02-10 20:12:52 +01:00
Clément BœschandClément Bœsch a78dd826ee ffmpeg: move video stats code to do_video_out().
This will allow some simplifications in transcode_video().
2012-02-10 20:12:52 +01:00
Clément BœschandClément Bœsch cf31060127 ffmpeg: move filtered_frame to video stream processing scope. 2012-02-10 20:12:52 +01:00
Clément BœschandClément Bœsch aede21f1b6 ffmpeg: reindent after video frame polling simplification. 2012-02-10 19:59:38 +01:00
Clément BœschandClément Bœsch e22c7b4e25 ffmpeg: simplify video frame polling.
input_video_filter and output_video_filter can't be NULL at this point.
If they are, the current code would likely crash anyway (since
filtered_frame would be NULL and sent to do_video_out().
2012-02-10 19:59:38 +01:00
Clément BœschandClément Bœsch 4ab4b3db5a ffmpeg: use exit_program() if configure_video_filters() fails. 2012-02-10 19:59:38 +01:00
Clément BœschandClément Bœsch d50a4c4a5b lavfi/amerge: copy ref props after filtering samples.
This fixes various issues with ffmpeg -ss and -t.
2012-02-02 14:31:18 +01:00
Clément BœschandClément Bœsch d055c3286c doc: document amerge filter as an alternative for the -map_channel limitation. 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch b90d79ec1f timecode: drop lavc timecode on next bump. 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch 6f55156234 dvenc: use new public timecode API. 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch bf6e83a8e8 mxfenc: use new public timecode API. 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch e2407556f1 gxfenc: use new public timecode API. 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch d8804905eb mpeg12enc: use new public timecode API. 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch f65600d519 drawtext: use new public timecode API. 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch 11e5d3b9cf dv: use new public timecode API. 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch 77971609de mov: honor tmcd flags while extracting timecode meta. 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch bd10f01aa8 mov: use new public timecode API. 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch ed67dac093 mpeg12: use av_mpegtc_to_timecode_string(). 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch dc386a5e3c ffprobe: use av_mpegtc_to_timecode_string(). 2012-02-02 14:31:17 +01:00
Clément BœschandClément Bœsch 0eaa123b34 lavu: add public timecode API. 2012-02-02 14:30:28 +01:00
Clément BœschandClément Bœsch b18ebcbe83 timecode: add write regressions tests. 2012-02-02 14:16:34 +01:00
Clément BœschandClément Bœsch c673671333 ffmpeg: fix -map_channel being ignored when resampling is not needed. 2012-01-31 17:44:46 +01:00
Clément BœschandClément Bœsch 5dfc7f7342 doc: add Timecode documentation. 2012-01-24 16:20:21 +01:00
Clément BœschandClément Bœsch 9bd44b42a8 pan: drop unecessary includes. 2012-01-24 10:43:42 +01:00
Clément BœschandClément Bœsch 66b1b7e5fa pan: move query_formats() to avoid forward declarations. 2012-01-24 10:43:42 +01:00
Clément BœschandClément Bœsch 94dc4a5046 pan: reindent after remap commit. 2012-01-24 10:43:41 +01:00
Clément BœschandClément Bœsch 6728dd37ac pan: add channel mapping capability. 2012-01-24 10:43:41 +01:00
Clément BœschandClément Bœsch 66fdbcbbc9 pan: raise correct error when there is no param specified. 2012-01-24 10:43:41 +01:00
Clément BœschandClément Bœsch 5fc51c3155 lavu: add 2.1 channel layout. 2012-01-16 17:38:23 +01:00
Clément BœschandClément Bœsch ca1bae3983 timecode: support >24h timecode. 2012-01-11 18:14:13 +01:00
Clément BœschandClément Bœsch f1db99166b timecode: string representation can be negative.
Timecode can be specified with a negative value in MOV...
2012-01-11 18:14:09 +01:00
Clément BœschandClément Bœsch 98aafc5bbf timecode: set a fixed buffer size of 16B for tc string. 2012-01-11 18:14:03 +01:00
Clément BœschandClément Bœsch ed14b7242a timecode: more tolerant frame rate check for drop flag.
This fixes some timecode probing in MOV.
2012-01-06 12:16:06 +01:00
Clément BœschandClément Bœsch 35da85562d mov: support timecode extraction. 2012-01-05 20:59:52 +01:00
Clément BœschandClément Bœsch adc278788b mov: annotate read values in tmcd track. 2012-01-05 20:59:52 +01:00
Clément BœschandClément Bœsch 2aa7375a98 timecode: add avpriv_check_timecode_rate(). 2012-01-05 20:59:52 +01:00
Clément BœschandClément Bœsch dc7ad85c40 doc: use @command{} for commands. 2012-01-04 13:21:08 +01:00
Clément BœschandClément Bœsch 837126568c doc: use @code{} for --{enable,disable}-options. 2012-01-04 13:21:08 +01:00
Clément BœschandClément Bœsch e1a8164d62 mp3enc: fix playback with mp3 encoded files on some devices.
This partially reverts 1fea432b; header variable needs to keep its value
in case it triggers "if (needed <= c.frame_size)".
2012-01-02 15:34:03 +01:00
Clément BœschandClément Bœsch 940d3cc0b0 drawtext: fix hard dependency to lavc (timecode). 2012-01-02 15:33:56 +01:00
Clément BœschandClément Bœsch 15a2a29ba3 lavfi: add thumbnail video filter. 2011-12-27 11:05:08 +01:00
Clément BœschandClément Bœsch 0b4e5451ba lavfi: use the new audio API in amovie source filter. 2011-12-13 20:25:12 +01:00
Clément BœschandClément Bœsch 220481e1d6 lavfi: skip the frame in case of error.
This fixes playback with some audio files through filters.
2011-12-13 20:19:49 +01:00
Clément BœschandClément Bœsch 80914cde6f timecode: rename internal ff_* symbols to avpriv_*.
Those functions are shared between libs.

Also fix a typo in function names: smtpe → smpte.
2011-12-12 17:49:34 +01:00
Clément BœschandClément Bœsch fa4e30af7e drawtext: allow burning the timecode. 2011-12-12 17:49:34 +01:00
Clément BœschandClément Bœsch ad5ade6615 timecode: add avpriv_timecode_to_string(). 2011-12-12 17:49:34 +01:00
Clément BœschandClément Bœsch 98aca4bbef timecode: better input checks in init function. 2011-12-12 17:49:34 +01:00
Clément BœschandClément Bœsch b6ffe441cd ffmpeg: do not use a negative total_size (AVERROR) in bitrate estimation. 2011-11-29 23:07:13 +01:00
Clément BœschandClément Bœsch 81a65b82fb swr: handle correctly muted channel with u8 sample fmt. 2011-11-29 17:14:25 +01:00
Clément BœschandClément Bœsch fbe6e29646 ffprobe: print codec timecode if available. 2011-11-28 14:06:02 +01:00