Commit Graph

36 Commits

Author SHA1 Message Date
John Stebbins da9cc22d5b movenc: add track title to tracks 2014-08-06 13:27:17 -07:00
John Stebbins 0897d2fdc7 movenc: Add option to disable nero chapters
And add flag to muxer documentation.
Nero chapters break some taggers (mp3tag and iTunes).

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-05 11:36:08 +02:00
Luca Barbato f90729699d mov: Do not group tracks if more than one is enabled per type
The specification requires at most 1 track enabled per alternate group.
2014-07-11 11:07:06 +02:00
Anton Khirnov 0ba5299a80 movenc: use the "encoder" metadata tag to write stsd Compressorname
This mirrors the demuxer behaviour and avoids accessing
AVCodecContext.codec, which should not be done in muxers.
2014-05-18 20:34:03 +02:00
John Stebbins 1e9db41e2a movenc: Allow override of major brand in ftyp atom
Signed-off-by: Tim Walker <tdskywalker@gmail.com>
2014-03-23 00:31:54 +01:00
Clément Bœsch 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
Martin Storsjö e7bf085b78 movenc: Add an option for omitting the tfhd base offset
This makes the output fragments independent of their position in
the output stream, making the output work better when streamed.

QuickTime Player doesn't support fragmented mp4 without the base
data offset, though.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-17 23:30:31 +03:00
Martin Storsjö a4adabb460 movenc: Write the moof atom in two passes
This is a bit more work, but avoids having to fill in
the data offset field afterwards instead of directly when
the rest of the trun atom is written.

This simplifies future cases where this field needs to be set to
something different.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-09-17 23:25:46 +03:00
John Stebbins 30ce289074 movenc: Make tkhd "enabled" flag QuickTime compatible
QuickTime will play multiple audio tracks concurrently if this flag is
set for multiple audio tracks.  And if no subtitle track has this flag
set, QuickTime will show no subtitles in the subtitle menu.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2013-08-23 09:55:42 +02:00
Clément Bœsch f8ef91ff3d movenc: add faststart option for web streaming
Faststart moves the moov atom to the beginning of the file and rewrites
the rest of the file after muxing is complete.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-08-21 14:20:33 +01:00
Andrey Semashev 7c020e1ad3 movenc: Grow the frag_info array in chunks
Previously it was grown one element at a time, which leads to
excessive reallocations.

Bug-Id: 525
Signed-off-by: Martin Storsjö <martin@martin.st>
2013-06-04 15:05:42 +03:00
Andrey Semashev ab1189766a movenc: Increase the cluster array allocation by doubling
The previous allocation increment of 16384 meant that the cluster
array was allocated for 0.6 MB initially, which is a bit excessive
for cases with fragmentation where only a fraction of that ever
actually is used.

Therefore, start off at a much smaller value, and increase by
doubling (to avoid reallocating too often when writing long
non-fragmented mp4 files).

Bug-Id: 525
Signed-off-by: Martin Storsjö <martin@martin.st>
2013-06-04 15:05:31 +03:00
Andrey Semashev 3b4feac1ec movenc: Keep track of the allocated size for the cluster array
When writing fragmented mp4, the cluster array is reset when a
fragment is written. Instead of starting off reallocating the
array only based on the number of current elements in it, keep
track of how many elements there were allocated earlier.

This avoids reallocating this array needlessly when writing
fragmented mp4 files.

Bug-Id: 525
Signed-off-by: Martin Storsjö <martin@martin.st>
2013-06-04 15:05:12 +03:00
Martin Storsjö 9683e37cd5 movenc: Change the track struct name to match the typedef
This makes the struct name (which isn't used anywhere) match the
name of the typedef, as for all the other structs declared in this
header.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-06-03 11:08:18 +03:00
Diego Biurrun e4cbf7529b Give all anonymously typedeffed structs in headers a name
Anonymous structs cannot be forward declared and have no benefit.
2012-10-06 09:27:11 +02:00
Martin Storsjö 39f5a5462c movenc: Add a min_frag_duration option
The other fragmentation options (frag_duration, frag_size and
frag_keyframe) are combined with OR, cutting fragments at the
first of the conditions being fulfilled.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-03-20 11:18:05 +02:00
Martin Storsjö 0c7b8b758a movenc: Buffer the mdat for the initial moov fragment, too
This allows writing QuickTime-compatible fragmented mp4 (with
a non-empty moov atom) to a non-seekable output.

This buffers the mdat for the initial fragment just as it does
for all normal fragments, too. Previously, the resulting
atom structure was mdat,moov, moof,mdat ..., while it now
is moov,mdat, moof,mdat.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-22 12:27:39 +02:00
Martin Storsjö 4ace130ee6 movenc: Support muxing VC1
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-14 16:12:18 +02:00
Martin Storsjö b7d3dd907f movenc: cosmetics: Get rid of camelCase identifiers
Also add spacing around operators on touched lines, and split
one line to match the common style.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-01-30 19:24:39 +02:00
Martin Storsjö f532210499 movenc: Support adding isml (smooth streaming live) metadata
This metadata is required for pushing a live stream to an IIS
publishing point.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-01-27 21:12:28 +02:00
Martin Storsjö 4ddd54dab4 movenc: Add a separate ismv/isma (smooth streaming) muxer
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-01-25 12:15:41 +02:00
Martin Storsjö b613ff5e93 movenc: Allow the caller to decide on fragmentation
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-01-25 12:15:41 +02:00
Martin Storsjö 83988d58ed movenc: Add support for writing fragmented mov files
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-01-25 12:15:41 +02:00
Martin Storsjö 6ca3856894 movenc: Add a separate start_pts
This fixes calculation of trackDuration if the MOVIentry array
is cleared. This is required by the fragmentation support in the
next patch.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-01-25 12:15:40 +02:00
Martin Storsjö 5d95112d92 movenc: Reorder entries in the MOVIentry struct, for tigheter packing
Originally, sizeof(struct MOVIentry) was 48, after the reordering,
it is 40 in my build configuration.

When writing really long mov/mp4 files, this can make a difference
- this saves a bit over 2 MB of memory per hour of video (down to
10.3 MB per hour from 12.3 MB per hour initially) for a video with
75 packets per second - 25 fps + 50 audio packets (which is the
case for AMR audio).

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-01-21 01:12:58 +02:00
Alex Converse d3b8bde2f1 movenc: Rudimentary IODs support. 2011-12-15 14:06:13 -08:00
Martin Storsjö e2484fb644 movenc: Use the actual converted sample for RTP hinting
If an annex b bitstream is muxed into mov, the actual written
sample is reformatted to mp4 syntax before writing.

Currently, the RTP hints that copy data from the normal video
track, where the payload data might be offset compared to the
original sample that the RTP hinting used (when 3 byte
annex b startcodes have been converted into 4 byte mp4 format
startcodes).

Signed-off-by: Martin Storsjö <martin@martin.st>
2011-12-11 01:37:26 +02:00
Diego Biurrun 20566eb0f0 Replace outdated references to ffmpeg tool with avconv. 2011-11-02 10:42:54 +01:00
Martin Storsjö d16cccac98 movenc: Add RTP muxer/hinter options
Signed-off-by: Martin Storsjö <martin@martin.st>
2011-06-10 10:52:32 +03:00
Martin Storsjö 28734ac995 movenc: Deprecate the global RTP hinting flag, use a private AVOption instead
Instead of -fflags rtphint, set -movflags rtphint instead.

Signed-off-by: Martin Storsjö <martin@martin.st>
2011-05-27 19:56:44 +03:00
Martin Storsjö 91e3a25ef6 movenc: Add an AVClass for setting muxer specific options
Signed-off-by: Martin Storsjö <martin@martin.st>
2011-05-27 19:56:33 +03:00
Mans Rullgard 2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
Martin Storsjö 44bf251a42 Use a heuristic for describing the RTP packets using sample data
Originally committed as revision 23165 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-05-18 19:48:25 +00:00
Martin Storsjö e977af6f2e Add initial support for RTP hinting in the mov muxer
Originally committed as revision 23164 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-05-18 19:47:24 +00:00
Martin Storsjö 27a826c941 Make mov_write_packet non-static, add ff_ prefix
Originally committed as revision 23163 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-05-18 19:40:17 +00:00
Martin Storsjö f72dad4142 Move the mov muxer structures to a separate header
Originally committed as revision 23162 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-05-18 19:38:37 +00:00