1
mirror of https://git.videolan.org/git/ffmpeg.git synced 2024-09-18 12:37:46 +02:00
Commit Graph

1035 Commits

Author SHA1 Message Date
Michael Niedermayer
a194298954 avformat/movenc: Drop redundant bit exact field from context
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-18 13:27:33 +02:00
compn
0054d5ac02 avformat/movenc: fix mime-types in movenc.c
https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html

says video/mp4

suggested by BBB on irc.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-07-09 02:17:35 +02:00
Michael Niedermayer
cfcb9f5e36 Merge commit 'e95c7a61852cc5b9ce5445ff034b87553e61958a'
* commit 'e95c7a61852cc5b9ce5445ff034b87553e61958a':
  mov: Preserve the metadata even when bit-exactness is requested

Conflicts:
	libavformat/movenc.c
	tests/ref/vsynth/vsynth1-mpeg4
	tests/ref/vsynth/vsynth2-mpeg4

See: a17ee4117d
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-30 21:47:58 +02:00
Luca Barbato
e95c7a6185 mov: Preserve the metadata even when bit-exactness is requested
Make sure to not write the custom `encoder` string in that case.

Bug-Id: 845
CC: libav-stable@libav.org
2015-06-30 15:34:38 +02:00
Michael Niedermayer
f98c3ec5c6 avformat/movenc: Check return code of ff_iso8601_to_unix_time()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-21 04:18:08 +02:00
Michael Niedermayer
9e40bd50e1 avformat/movenc: Make static packed_size, const static
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-11 00:48:41 +02:00
Janne Grunau
529c05698e movenc: fixes a questionable valgrind uninitialized value warning
display_matrix_size is only initialized when av_stream_get_side_data()
returns a side data pointer. The code is safe since the only effect this
has is setting the display_matrix pointer to NULL which it was already
anyway.
2015-06-10 14:32:11 +02:00
Michael Niedermayer
627dd7fe7e avformat/movenc: Fix potential signed overflows
Fixes CID1302838

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-01 17:54:58 +02:00
Michael Niedermayer
a3ec1d6abd avformat/movenc: Add loction/xyz support to allow copying data between mov files
Fixes Ticket4337

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-30 16:44:05 +02:00
Michael Niedermayer
061a592b9c avformat/movenc: Check that track_width_1616 fits within the available 32bit before storing it
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-29 12:54:37 +02:00
Michael Niedermayer
14bc570442 avformat/movenc: avoid floats in width/height/aspect ratio computations
This avoids the possibility for rounding/precision differences between platforms

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-29 12:46:58 +02:00
Michael Niedermayer
023040ed0d avformat/movenc: Allow muxing mp3 with samplerate < 16khz if the user sets strict to -1
Fixes Ticket4267

Approved-by: Baptiste Coudurier <baptiste.coudurier@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-27 01:47:59 +02:00
Michael Niedermayer
894d8cf418 avformat/movenc: Avoid floats & float rounding in tmcd nb_frames calculation
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-26 14:51:00 +02:00
Michael Niedermayer
0c3b4efc76 avformat/movenc: Remove float use from rgb_to_yuv()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-24 13:32:53 +02:00
Carl Eugen Hoyos
4fb3efd2c1 lavf/mov: Use AVCOL_SPC constants when checking color_space.
Suggested-by: Ronald Bultje
2015-05-21 01:04:57 +02:00
Carl Eugen Hoyos
c4f864193f lavf/mov: Write colour matrix "6" for color_space bt470bg.
This matches the demuxer's behaviour.
2015-05-21 01:04:45 +02:00
Michael Niedermayer
ad3c5ff347 Merge commit 'e0046bc9c96150fa06146ace9093f06857dd7b23'
* commit 'e0046bc9c96150fa06146ace9093f06857dd7b23':
  movenc: Write the make and model metadata keys for mov style files

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-23 20:33:09 +01:00
Martin Storsjö
e0046bc9c9 movenc: Write the make and model metadata keys for mov style files
These are essential allowing QuickTime to keep detecting content
as slow-motion - this allows preserving them on stream copy.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-23 12:43:35 +02:00
Michael Niedermayer
3c5c6870a7 avformat/movenc: avoid using uninitialized display_matrix_size
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-21 00:24:31 +01:00
Michael Niedermayer
750cf4e537 Merge commit 'cf18e777aed9f73011c7ab7cbab8003189d4b9d8'
* commit 'cf18e777aed9f73011c7ab7cbab8003189d4b9d8':
  movenc: write the display transform matrix

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-20 01:10:06 +01:00
Anton Khirnov
cf18e777ae movenc: write the display transform matrix 2015-03-19 21:02:59 +01:00
Michael Niedermayer
b5448e66b0 Merge commit '67a2912307c3c08f2725ccae162cfe3426b80184'
* commit '67a2912307c3c08f2725ccae162cfe3426b80184':
  movenc: Don't assume that fragment durations in pts is equal to duration in dts

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-19 13:38:25 +01:00
Michael Niedermayer
25d7e3ad59 Merge commit '5c337353a2546416631a87de4881850d99141c39'
* commit '5c337353a2546416631a87de4881850d99141c39':
  movenc: Move sidx edit list timestamp adjustment into a block

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-19 13:26:47 +01:00
Michael Niedermayer
3602782429 Merge commit 'eee13d653953083553cceadbbedf6222ef78a006'
* commit 'eee13d653953083553cceadbbedf6222ef78a006':
  movenc: Only adjust the cts offset at the start of fragments if necessary

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-19 12:47:19 +01:00
Michael Niedermayer
4631d4bec3 Merge commit '5cf892d6946b19a87bcd00d6b76ce81f45960fdb'
* commit '5cf892d6946b19a87bcd00d6b76ce81f45960fdb':
  movenc: Write pts timestamps in tfxd, instead of dts timestamps

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-19 12:38:51 +01:00
Michael Niedermayer
00ad3432e1 Merge commit 'b81b0cc22b22413760423e239ea644c9afdbfa2d'
* commit 'b81b0cc22b22413760423e239ea644c9afdbfa2d':
  movenc: Set the last packet duration based on the next packet when autoflushing

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-19 12:38:29 +01:00
Michael Niedermayer
76fef5cd27 Merge commit '2889c5e16711770437f380f1bead5f72c6a0b17a'
* commit '2889c5e16711770437f380f1bead5f72c6a0b17a':
  movenc: Heuristically set the duration of the last sample in a fragment if not set

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-19 12:09:51 +01:00
Martin Storsjö
67a2912307 movenc: Don't assume that fragment durations in pts is equal to duration in dts
For strict CFR, they should be pretty much equal, but if the stream
is VFR, there can be a sometimes significant difference.

Calculate the pts duration separately, used in sidx atoms and for
tfrf/tfxd boxes in smooth streaming ismv files.

Also make sure to reduce the duration of sidx entries according to
edit lists.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-19 10:27:20 +02:00
Martin Storsjö
5c337353a2 movenc: Move sidx edit list timestamp adjustment into a block
When reading these values from track->frag_info, the same adjustment
has already been done.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-19 10:27:17 +02:00
Martin Storsjö
eee13d6539 movenc: Only adjust the cts offset at the start of fragments if necessary
Adjusting it is only necessary when a sidx/tfrf/tfxd atom already has
been written for the previous fragment (since the sidx/tfrf/tfxd atoms
include the duration between the first pts of the previous fragment, to
the first pts of the new fragment).

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-19 10:27:15 +02:00
Martin Storsjö
5cf892d694 movenc: Write pts timestamps in tfxd, instead of dts timestamps
This matches what we write in tfra and tfrf since 9cbf70fa0e.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-19 10:27:12 +02:00
Martin Storsjö
b81b0cc22b movenc: Set the last packet duration based on the next packet when autoflushing
When automatically flushing fragments based on set conditions
(fragmentation on keyframes, after some interval or byte size),
we already have the next packet for one stream - use this for setting
the duration of the last packet in the flushed fragment correctly.

This avoids having to adjust the timestamp of the first packet in
the new fragment since the last duration was unknown.

Unfortunately, this only works for automatic flushing (not for
caller-triggered flushing, like in the dash muxer), and only for the
one single track that triggered the flushing. The duration of the
last sample in all other tracks still is dependent on AVPacket
duration (or heuristics).

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-19 10:27:07 +02:00
Martin Storsjö
2889c5e167 movenc: Heuristically set the duration of the last sample in a fragment if not set
Even if this is a guess, it is way better than writing a zero duration
of the last sample in a fragment (because if the duration is zero,
the first sample of the next fragment will have the same timestamp
as the last sample in the previous one).

Since we normally don't require libavformat muxer users to set
the duration field in AVPacket, we probably can't strictly require
it here either, so don't log this as a strict warning, only as info.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-19 10:26:52 +02:00
Michael Niedermayer
ae65cc7ed3 Merge commit '2cb9c2fc59c9267ad2631c07c81c188058502259'
* commit '2cb9c2fc59c9267ad2631c07c81c188058502259':
  movenc: Allow interleaving samples when writing fragmented files

Conflicts:
	libavformat/movenc.c
	libavformat/movenc.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-16 23:30:13 +01:00
Michael Niedermayer
312eb0d66f Merge commit '50ff0c05b691524d1fd044a2f2eefb706932fc98'
* commit '50ff0c05b691524d1fd044a2f2eefb706932fc98':
  movenc: Support writing multiple trun atoms

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-16 21:53:02 +01:00
Martin Storsjö
2cb9c2fc59 movenc: Allow interleaving samples when writing fragmented files
This is incompatible with the omit_tfhd_offset flag (writing
position independent fragments with interleaving requires the
default_base_moof flag).

This makes the moof atoms slightly bigger, but can be better for
playback (improving locality of sample data in the mdat).

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-16 13:23:19 +02:00
Martin Storsjö
50ff0c05b6 movenc: Support writing multiple trun atoms
This is needed if all the data for one track isn't continuous
within the mdat. Normally we make sure all the data for one
track is continuous, but in new cases we will need to have
the samples interleaved.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-16 13:23:19 +02:00
Michael Niedermayer
f8f324cc16 Merge commit '448c8cfe4c53e9e806effd8505b46d57fa707061'
* commit '448c8cfe4c53e9e806effd8505b46d57fa707061':
  movenc: Support setting fragment_index before the moov atom is written

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-10 11:42:44 +01:00
Michael Niedermayer
8d026861f5 Merge commit '0c5e380c2c266d2e8a13c000cc527529db837f10'
* commit '0c5e380c2c266d2e8a13c000cc527529db837f10':
  movenc: Don't rely on the fragment index for vc1 info gathering

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-10 11:28:24 +01:00
Martin Storsjö
448c8cfe4c movenc: Support setting fragment_index before the moov atom is written
This way, the caller doesn't need to coordinate setting the option
after the moov atom has been written. The downside is that it is
no longer possible to use the option for checking whether the moov
atom already has been written, but a caller is able to keep track
of that by other means anyway.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-10 10:41:06 +02:00
Martin Storsjö
0c5e380c2c movenc: Don't rely on the fragment index for vc1 info gathering
The previous use of the mov->fragments field, for determining whether
written packets were part of the first fragment or not, didn't
work as intended when using the empty_moov flag.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-10 10:41:03 +02:00
Michael Niedermayer
ba0198a767 Merge commit '46d4d8575979a24a8d026d9805039b724e0e3e5f'
* commit '46d4d8575979a24a8d026d9805039b724e0e3e5f':
  movenc: Avoid writing separate flags for the first sample if not necessary

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 11:27:29 +01:00
Michael Niedermayer
e8821e74bb Merge commit '00d751d4fc20ec88d2cc2c9f39ec8b9e9c8cdeba'
* commit '00d751d4fc20ec88d2cc2c9f39ec8b9e9c8cdeba':
  movenc: Set tfhd default sample flags based on actual samples, if possible

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-09 11:15:12 +01:00
Martin Storsjö
46d4d85759 movenc: Avoid writing separate flags for the first sample if not necessary
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-09 10:36:12 +02:00
Martin Storsjö
00d751d4fc movenc: Set tfhd default sample flags based on actual samples, if possible
This avoids assuming that e.g. audio samples are marked as
sync samples.

This allows omitting the sample flags from trun, if the default
flags happen to be right for all the samples.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-09 10:36:02 +02:00
Michael Niedermayer
1468ff49df Merge commit '9731cf4001377fa2f75c279072cc2b0cbd57bf8e'
* commit '9731cf4001377fa2f75c279072cc2b0cbd57bf8e':
  movenc: Keep writing zero-entry stts atoms as intended

Conflicts:
	libavformat/movenc.c

See: 95165f7c1b
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-06 20:57:11 +01:00
Martin Storsjö
9731cf4001 movenc: Keep writing zero-entry stts atoms as intended
a876585215 had the unintended side effect of returning AVERROR(ENOMEM)
when track->entry is zero, while the code intentionally wants to
continue in that case.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-03-06 16:17:48 +02:00
Kevin Wheatley
45555a20c6 avformat/movenc: Add support for writing 'gama' atom to QuickTime .mov files.
As this is depricated it should not be on by default, it is only
supported for MOV containers, depends on avpriv_get_gamma_from_trc()

Enable by:

-movflags +write_gama

This will use the color_trc to supply a gamma value, if desired an
explicit value may be supplied using the -mov_gamma option supplying
a suitable floating point value, values <=1e-6 will not be written.

Signed-off-by: Kevin Wheatley <kevin.j.wheatley@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-05 12:26:37 +01:00
Michael Niedermayer
4ad7b8f64a avformat/movenc: mark write_colr as experimental
This way the flag can be flipped to a nowrite_colr, if people prefer that

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-04 22:36:23 +01:00
Derek Buitenhuis
a22032281c movenc: Write 'colr' box correctly for MP4
This also restricts it to MOV and MP4, since it is only
defined for those formats.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2015-02-27 14:06:02 +00:00
Kevin Wheatley
3664703780 avformat/movenc: Fix writing ACLR atoms for DNxHD
Using the copy codec ACLR atoms where incorrectly written

During the creation of the ACLR atom we are assuming the vos_data
contains the DNxHD header. This change makes this explicit and
ensures we don't over write the stream with the extra_data.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-24 16:54:02 +01:00
Michael Niedermayer
3518925a91 avformat/movenc: Check for memory allocation failures
Fixes CID1271049
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-22 20:20:13 +01:00
Kevin Wheatley
31c7c0e156 avformat/movenc: Move avid DNxHD padding to the correct spot
Outputting DNxHD into .mov containers 'corrupts' following atoms until end of stsd

ffmpeg and qtdump could not decode pasp/colr atoms in the files made by ffmpeg,
when outputting DNxHD due to the incorrect padding placement. Now we add the
padding in the correct place

Tidy up FATE changes due to padding changes.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-20 12:17:14 +01:00
Michael Niedermayer
9e008ed1b4 avformat/movenc: Fix use of uninitialized variable (ret)
Fixed CID1270823

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-18 16:33:15 +01:00
Michael Niedermayer
95165f7c1b avformat/movenc: Fix stts_entries allocation check
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-17 21:51:35 +01:00
Michael Niedermayer
80c5dc5610 Merge commit 'a8765852158ecb2ae34895fa35ff51dc95c186f9'
* commit 'a8765852158ecb2ae34895fa35ff51dc95c186f9':
  movenc: Check memory allocations

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-17 21:50:08 +01:00
Hugo Beauzée-Luyssen
a876585215 movenc: Check memory allocations
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-02-17 12:16:43 -05:00
Kevin Wheatley
7fc33dca39 libavformat: DNxHD in .mov, switch unspecified color_range to mpeg
Avid prefers mpeg range [16-235] by default this change brings
ffmpeg into line with that. To obtain the old behaviour use
'-color_range jpeg' on the command line prior to the ouput
filename.

Signed-off-by: Kevin Wheatley <kevin.j.wheatley@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-10 16:46:12 +01:00
Carl Eugen Hoyos
a2bc8c5601 Fix standalone compilation of the mov muxer with --disable-optimizations.
Reported-by: Bernhard Döbler
2015-02-08 15:48:26 +01:00
Paul B Mahol
f705b1287b avformat/movenc: remove unneeded #include, there are no assert() only av_assert*
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-01-31 08:57:07 +00:00
Kevin Wheatley
7b6f419176 avformat/movenc: Add simplistic 'colr' tag writing support to mov container
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-26 17:49:50 +01:00
Michael Niedermayer
da048c6d24 avformat/movenc: Check failure of allocation of ctts_entries and propagate error
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-25 14:32:22 +01:00
Michael Niedermayer
47785b44b5 avformat/movenc: fix cleanup on insufficient reserved_moov_size
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-25 14:28:43 +01:00
Carl Eugen Hoyos
a5334d4081 Handle r10k endianess atom DpxE.
Fixes playback and remuxing of r10k_full-range_big-endian.mov.

Reported, analyzed and tested by Olaf Matthes, olaf matthes gmx de
2015-01-11 12:15:03 +01:00
Michael Niedermayer
6f838dee3c avformat/movenc: move variable to a more local block
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-10 04:50:50 +01:00
Michael Niedermayer
7824dc5150 avformat/movenc: workaround bug in "PathScale EKOPath(tm) Compiler Suite Version 4.0.12.1"
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-10 03:43:54 +01:00
Michael Niedermayer
cb03d29dec Merge commit '2a1500fb552364488cfbee3e29e296788a3a6bdd'
* commit '2a1500fb552364488cfbee3e29e296788a3a6bdd':
  movenc: Fix a typo in a comment

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-07 00:46:47 +01:00
Michael Niedermayer
0d0a905152 Merge commit 'e581e88cbdb3323ca0026a54b39a9716a3686e9f'
* commit 'e581e88cbdb3323ca0026a54b39a9716a3686e9f':
  movenc: Readd an accidentally removed condition

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-07 00:39:44 +01:00
Martin Storsjö
2a1500fb55 movenc: Fix a typo in a comment
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-01-06 19:47:18 +02:00
Martin Storsjö
e581e88cbd movenc: Readd an accidentally removed condition
This was removed accidentally as part of 847bf598. This could cause
groundless warning logging.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-01-06 19:47:09 +02:00
Michael Niedermayer
fb22e5ae45 Merge commit '46808fdf04ab113df374157b90b506eb3110daf2'
* commit '46808fdf04ab113df374157b90b506eb3110daf2':
  movenc: Enable editlists by default if delay_moov is enabled

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-05 02:45:34 +01:00
Martin Storsjö
46808fdf04 movenc: Enable editlists by default if delay_moov is enabled
Being able to write editlists properly is one of the main points
in the delay_moov flag.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-01-04 20:04:36 +02:00
Michael Niedermayer
0daf60140b avformat/movenc: fix DELAY_MOOV
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-03 17:45:12 +01:00
Michael Niedermayer
b0ba8a23b6 Merge commit 'b3b0b35db2f3b61bf2f0f4fa85f5b6267d83c8fe'
* commit 'b3b0b35db2f3b61bf2f0f4fa85f5b6267d83c8fe':
  movenc: Get rid of a hack for updating the dvc1 atom

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-03 04:01:34 +01:00
Michael Niedermayer
f38e2bcb72 Merge commit '847bf5988fec1d3e65c1d8cf0cdb8caf0cfd0c1b'
* commit '847bf5988fec1d3e65c1d8cf0cdb8caf0cfd0c1b':
  movenc: Add an option for delaying writing the moov with empty_moov

Conflicts:
	libavformat/movenc.c
	libavformat/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-03 03:13:16 +01:00
Michael Niedermayer
504267fb56 avformat/movenc: Use cluster timestamps when available in edts
Also print both if they differ

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-03 02:47:35 +01:00
Michael Niedermayer
0506f687e8 Merge commit 'c725faebda9a516766d94c33b07972ab0f70cf93'
* commit 'c725faebda9a516766d94c33b07972ab0f70cf93':
  movenc: Use start_dts/cts instead of cluster[0] for writing edit lists

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-03 01:38:58 +01:00
Michael Niedermayer
68a06a244c Merge commit '724cbea7193945fe5a5b4dea8ede344803572844'
* commit '724cbea7193945fe5a5b4dea8ede344803572844':
  movenc: Remove an unnecessary condition when flushing fragments

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-03 01:25:30 +01:00
Michael Niedermayer
7ca10d10aa Merge commit '355d01a1bf55297b1d1f04e4bfbf0ddc93b6247e'
* commit '355d01a1bf55297b1d1f04e4bfbf0ddc93b6247e':
  movenc: Factorize writing ftyp and other identification tags to a separate function

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-03 01:18:54 +01:00
Martin Storsjö
b3b0b35db2 movenc: Get rid of a hack for updating the dvc1 atom
Use the more generic approach with the delay_moov flag, instead of
having a update mechanism specific to this one single atom.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-01-03 01:20:40 +02:00
Martin Storsjö
847bf5988f movenc: Add an option for delaying writing the moov with empty_moov
This delays writing the moov until the first fragment is written,
or can be flushed by the caller explicitly when wanted. If the first
sample in all streams is available at this point, we can write
a proper editlist at this point, allowing streams to start at
something else than dts=0. For AC3 and DNXHD, a packet is
needed in order to write the moov header properly.

This isn't added to the normal behaviour for empty_moov, since
the behaviour that ftyp+moov is written during avformat_write_header
would be changed. Callers that split the output stream into header+segments
(either by flushing manually, with the custom_frag flag set, or by
just differentiating between data written during avformat_write_header
and the rest) will need to be adjusted to take this option into use.

For handling streams that start at something else than dts=0, an
alternative would be to use different kinds of heuristics for
guessing the start dts (using AVCodecContext delay or has_b_frames
together with the frame rate), but this is not reliable and doesn't
necessarily work well with stream copy, and wouldn't work for getting
the right initialization data for AC3 or DNXHD either.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-01-03 01:19:27 +02:00
Martin Storsjö
c725faebda movenc: Use start_dts/cts instead of cluster[0] for writing edit lists
This allows writing edit lists even when track->entry == 0, if
the start times have been set.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-01-03 01:18:52 +02:00
Martin Storsjö
724cbea719 movenc: Remove an unnecessary condition when flushing fragments
If fragments == 0 it means we haven't written any moov atom yet.
If the empty_moov flag is set, we already have written an empty moov
atom at startup. Thus, the check for empty_moov is redundant.

This is in preparation for allowing writing the moov atom later,
even when using the empty moov flag.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-01-03 01:18:38 +02:00
Martin Storsjö
355d01a1bf movenc: Factorize writing ftyp and other identification tags to a separate function
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-01-03 01:18:28 +02:00
Michael Niedermayer
c8e05c438f Merge commit '59f0275dd0a42a7f90271a83a78e9ca5e69ff5b0'
* commit '59f0275dd0a42a7f90271a83a78e9ca5e69ff5b0':
  movenc: Adjust the pts of new fragments similarly to what is done for dts

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-19 02:58:16 +01:00
Martin Storsjö
59f0275dd0 movenc: Adjust the pts of new fragments similarly to what is done for dts
The pts and the corresponding duration is written in sidx
atoms, thus make sure these match up correctly.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-12-18 23:14:27 +02:00
Carl Eugen Hoyos
01ab761b46 Allow mov musing if the ac3 parser was disabled.
This reverts 8091fe30.
Reported and tested by Takashi, ffmpeg-list dubistmeinheld de
2014-12-09 22:12:53 +01:00
Rens Dijkshoorn
dceb8b1252 avformat/movenc: Add 2048x1080 to the aivx case
This improves compatibility of such files with apple tools

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-08 04:26:16 +01:00
Carl Eugen Hoyos
7a4be4315f Support muxing 4k AVC Intra in mov.
Reported and tested by Rens Dijkshoorn, rens onlinemedia nl
2014-12-02 23:35:40 +01:00
Michael Niedermayer
0df95fa327 Merge commit '234fb81e3145e9c9aec4ec16266676fab7dc21fa'
* commit '234fb81e3145e9c9aec4ec16266676fab7dc21fa':
  movenc: Expose the fragment index as an avoption

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-26 12:27:01 +01:00
Michael Niedermayer
b78074fd13 Merge commit 'ee37620b6ae4783cda637408422044b2d14a688c'
* commit 'ee37620b6ae4783cda637408422044b2d14a688c':
  movenc: Add a flag for indicating a discontinuous fragment

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-26 11:27:17 +01:00
Martin Storsjö
234fb81e31 movenc: Expose the fragment index as an avoption
This allows setting the right fragment number if doing
random-access writing of fragments, and also allows reading the
current sequence number.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-26 09:58:13 +02:00
Martin Storsjö
ee37620b6a movenc: Add a flag for indicating a discontinuous fragment
This allows creating a later mp4 fragment without sequentially
writing the earlier ones before (when called from a segmenter).

Normally when writing a fragmented mp4 file sequentially, the
first timestamps of a fragment are adjusted to match the
end of the previous fragment, to make sure the timestamp is the
same, even if it is calculated as the sum of previous fragment
durations. (And for the first packet in a file, the offset of
the first packet is written using an edit list.)

When writing an individual mp4 fragment discontinuously like this
(with potentially writing the earlier fragments separately later),
there's a risk of getting a gap in the timeline if the duration
field of the last packet in the previous fragment doesn't match up
with the start time of the next fragment.

Using this requires setting -avoid_negative_ts make_non_negative
(or -avoid_negative_ts 0).

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-26 09:56:56 +02:00
Michael Niedermayer
4dc305d784 Merge commit '40ed1cbf147d09fc0894bee160f0b6b6d9159fc5'
* commit '40ed1cbf147d09fc0894bee160f0b6b6d9159fc5':
  movenc: Allow writing a DASH sidx atom at the start of files

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 23:02:02 +01:00
Michael Niedermayer
3fa4351d6b Merge commit '3847f3ab58b3b74604807394247bf68827258103'
* commit '3847f3ab58b3b74604807394247bf68827258103':
  movenc: Add tfra entries for all tracks in a moof

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 22:24:05 +01:00
Michael Niedermayer
9e0b0c60bd Merge commit '2ded57371abead879bcee56da5131e5fac0d17ef'
* commit '2ded57371abead879bcee56da5131e5fac0d17ef':
  movenc: Add support for writing sidx atoms for DASH segments

Conflicts:
	Changelog
	libavformat/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 21:55:23 +01:00
Michael Niedermayer
1fddfaa282 Merge commit '2d9d6afb8d2f284f5e620ecc19f643d5cd3facb8'
* commit '2d9d6afb8d2f284f5e620ecc19f643d5cd3facb8':
  movenc: Factorize adding fragment info into a separate function

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 21:43:43 +01:00
Michael Niedermayer
b96c1cd78b Merge commit '0f9eb9165bb7d7982fdedf64f6bcec856f1bedd6'
* commit '0f9eb9165bb7d7982fdedf64f6bcec856f1bedd6':
  movenc: Include empty tracks in iods when writing fragmented mp4

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 21:22:47 +01:00
Martin Storsjö
40ed1cbf14 movenc: Allow writing a DASH sidx atom at the start of files
This is mapped to the faststart flag (which in this case
perhaps should be called "shift and write index at the
start of the file"), which for fragmented files will
write a sidx index at the start.

When segmenting DASH into files, there's usually one sidx
at the start of each segment (although it's not clear to me
whether that actually is necessary). When storing all of it
in one file, the MPD doesn't necessarily need to describe
the individual segments, but the offsets of the fragments can be
fetched from one large sidx atom at the start of the file. This
allows creating files for the DASH ISO BMFF on-demand profile.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-17 16:17:07 +02:00
Martin Storsjö
3847f3ab58 movenc: Add tfra entries for all tracks in a moof
Previously only tfra entries were added for the first track in each moof.

The frag_info array used for tfra can also be used for writing
other kinds of fragment indexes, where it's more important to
include all tracks.

When the separate_moof option is enabled (as in ismv), we write
a separate moof for each track, so this doesn't make any difference
in that case.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-17 16:17:07 +02:00
Martin Storsjö
2ded57371a movenc: Add support for writing sidx atoms for DASH segments
A flag "dash" is added, which enables the necessary flags for
creating DASH compatible fragments.

When this is enabled, one sidx atom is written for each track
before every moof atom.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-17 16:16:46 +02:00
Martin Storsjö
2d9d6afb8d movenc: Factorize adding fragment info into a separate function
By calling this after writing the moof the first time (for
calculating the moof size), we can avoid intermediate storage
of tfrf_offset in MOVTrack.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-17 16:13:02 +02:00
Martin Storsjö
0f9eb9165b movenc: Include empty tracks in iods when writing fragmented mp4
When writing fragmented streams with an empty initial moov,
we won't have any samples in any tracks when writing the
moov atom, thus trust that any tracks that are added actually
will be present.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-17 16:12:02 +02:00
Michael Niedermayer
9ebfe38f38 Merge commit '9a5ac36b69ede4563e9ecd734141b12ea3280fbc'
* commit '9a5ac36b69ede4563e9ecd734141b12ea3280fbc':
  movenc: Require samples before trying to write edts

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-08 11:41:29 +01:00
Michael Niedermayer
4342b346d2 Merge commit '8cb7b7b461b52898765b38e3eff68c0ce88347f3'
* commit '8cb7b7b461b52898765b38e3eff68c0ce88347f3':
  movenc: Avoid leaking locally allocated data when returning on errors

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-08 11:08:57 +01:00
Michael Niedermayer
0bdc5db520 Merge commit '95a449d3ce8e15522df47a80a8a4593ea5c2b1bb'
* commit '95a449d3ce8e15522df47a80a8a4593ea5c2b1bb':
  movenc: Remove an outdated comment

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-08 10:57:10 +01:00
Martin Storsjö
9a5ac36b69 movenc: Require samples before trying to write edts
This avoids a potential crash if writing a fragmented psp mp4
(which probably is only a hypothetical scenario).

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-08 11:14:21 +02:00
Martin Storsjö
8cb7b7b461 movenc: Avoid leaking locally allocated data when returning on errors
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-08 11:14:08 +02:00
Martin Storsjö
95a449d3ce movenc: Remove an outdated comment
QuickTime does support files with an empty initial movie
these days.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-08 11:13:37 +02:00
Michael Niedermayer
c9a9a7a1fd Merge commit '9cbf70fa0e44613590b019cef1fe99aa3f3c5d9d'
* commit '9cbf70fa0e44613590b019cef1fe99aa3f3c5d9d':
  movenc: Write correct presentation timestamps in tfra

Conflicts:
	libavformat/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-08 01:04:04 +01:00
Michael Niedermayer
872c0bcd3c Merge commit 'e7d20f12c5eff5570cd897f3ce3a88456024036b'
* commit 'e7d20f12c5eff5570cd897f3ce3a88456024036b':
  movenc: Remove a now redundant check

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-08 00:32:52 +01:00
Michael Niedermayer
2893d1b36d Merge commit '1d8a0c1b43e58332a3a15c67d4adc161713cade8'
* commit '1d8a0c1b43e58332a3a15c67d4adc161713cade8':
  movenc: Allow to request not to use edit lists

Conflicts:
	libavformat/movenc.c

See: 537ef8bebf
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-08 00:22:42 +01:00
Martin Storsjö
9cbf70fa0e movenc: Write correct presentation timestamps in tfra
Previously we wrote decoding timestamps here, while the specs
say it should be presentation timestamps.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-07 14:50:06 +02:00
Martin Storsjö
e7d20f12c5 movenc: Remove a now redundant check
When using the new first_trun flag instead of checking the track id,
we don't need to have a special case for the separate_moof flag
any longer.

This simplifies the complicated codepath ever so slightly.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-07 13:46:19 +02:00
Martin Storsjö
1d8a0c1b43 movenc: Allow to request not to use edit lists
In this case, shift tracks to start from zero instead (potentially
stretching the first sample in tracks that start later than the
first one).

Some software does not support edit lists at all, the adobe flash
player seems to be one of these. This results in AV sync errors when
edit lists are used to adjust AV sync.

Some players, such as QuickTime, don't respect the duration for
audio packets, so if an audio track starts later than the video
track and the first audio sample gets a duration longer than the
actual amount of data in it, the result will be out of sync.

Based on patches by Michael Niedermayer.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-11-07 12:11:46 +02:00
Michael Niedermayer
042eba52a5 Merge commit '91e8d2eb1f7bf3af949008b106ec1ca037b88b0e'
* commit '91e8d2eb1f7bf3af949008b106ec1ca037b88b0e':
  lavf: use the format context strict_std_compliance instead of the codec one

Conflicts:
	libavformat/mux.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-06 13:10:01 +01:00
Anton Khirnov
91e8d2eb1f lavf: use the format context strict_std_compliance instead of the codec one 2014-11-06 09:01:49 +01:00
Carl Eugen Hoyos
e6b7246a68 lavf/movenc: Write G.726 bitrate to make the files decodable.
Fixes ticket #4069.
2014-11-03 00:38:13 +01:00
Michael Niedermayer
dd2f868644 Merge commit 'aae6b3b918b4133b8cc2d1631196c1d406d0351a'
* commit 'aae6b3b918b4133b8cc2d1631196c1d406d0351a':
  movenc: Don't write any iso brands in ismv files

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-31 02:52:43 +01:00
Michael Niedermayer
77eff7a58a Merge commit 'c55d1d382cd41345a79782ace41f9b43f45dca9a'
* commit 'c55d1d382cd41345a79782ace41f9b43f45dca9a':
  movenc: Don't write any tfdt atom for ismv files

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-31 02:37:49 +01:00
Michael Niedermayer
61f1c96ef1 Merge commit '00c67fe1d0bc7c2ce49daac9c80ea39d5a663b73'
* commit '00c67fe1d0bc7c2ce49daac9c80ea39d5a663b73':
  movenc: Write a 0 duration in mdhd and tkhd for an empty initial moov

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-31 02:23:33 +01:00
Michael Niedermayer
8065a0cdbe Merge commit 'cf589faa5b7aed3bb38e08dcd00bd951e69686d1'
* commit 'cf589faa5b7aed3bb38e08dcd00bd951e69686d1':
  movenc: Add a flag for using default-base-is-moof in tfhd atoms

Conflicts:
	libavformat/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-31 01:46:25 +01:00
Martin Storsjö
aae6b3b918 movenc: Don't write any iso brands in ismv files
We deviate slightly from the iso specs for these files.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-30 23:17:00 +02:00
Martin Storsjö
c55d1d382c movenc: Don't write any tfdt atom for ismv files
The tfdt atom shouldn't be needed in those cases, we already
write tfxd atoms for ismv anyway, which is roughly equivalent.

This avoids having to declare the iso6 brand for ismv files.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-30 23:16:56 +02:00
Martin Storsjö
00c67fe1d0 movenc: Write a 0 duration in mdhd and tkhd for an empty initial moov
ISO/IEC 14496-12:2012/Cor 1:2013 is explicit about how this should be
handled. All zeros doesn't mean that the full file has got a zero
duration, only that the track samples described within the initial moov
have got zero duration. An all ones duration means an indeterminate
duration.

Keep writing a duration consisting of all ones for the ISM mode -
older windows media player versions won't play a file if this is
zero. (Newer windows media player versions play either version fine.)

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-30 23:16:50 +02:00
Michael Niedermayer
7f24e1e1a2 Merge commit '600d5ee6b12bad144756b0772319bb04796bc528'
* commit '600d5ee6b12bad144756b0772319bb04796bc528':
  movenc: Signal iso6 in compatible_brands when using tfdt

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-30 02:53:52 +01:00
Michael Niedermayer
ad600e10da Merge commit '1e0b81abe86dc09dd34d60d57f92de5f12d65818'
* commit '1e0b81abe86dc09dd34d60d57f92de5f12d65818':
  movenc: Use a local variable consistently

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-30 02:37:03 +01:00
Michael Niedermayer
39cce77faf Merge commit 'b2b79eca6fae2466a53c5daa163a37e2474364fc'
* commit 'b2b79eca6fae2466a53c5daa163a37e2474364fc':
  movenc: Don't check the custom IO flag when using faststart

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-30 02:25:02 +01:00
Michael Niedermayer
647405d111 Merge commit '573b1de2d7f1db71030f91ecdded7d0bc071f6b6'
* commit '573b1de2d7f1db71030f91ecdded7d0bc071f6b6':
  movenc: Don't use track_id to decide which track is the first in a moof

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-30 02:17:54 +01:00
Martin Storsjö
cf589faa5b movenc: Add a flag for using default-base-is-moof in tfhd atoms
Similarly to the omit_tfhd_offset flag added in e7bf085b, this
avoids writing absolute byte positions to the file, making them
more easily streamable.

This is a new feature from 14496-12:2012, so application support
isn't necessarily too widespread yet (support for it in libav was
added in 20f95f21f in July 2014).

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-29 23:04:04 +02:00
Martin Storsjö
600d5ee6b1 movenc: Signal iso6 in compatible_brands when using tfdt
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-29 23:03:52 +02:00
Martin Storsjö
1e0b81abe8 movenc: Use a local variable consistently
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-29 23:03:45 +02:00
Martin Storsjö
b2b79eca6f movenc: Don't check the custom IO flag when using faststart
The custom IO flag actually never is set for muxers, only for
demuxers, so the check was pointless (unless a user intentionally
would set the flag to signal using custom IO).

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-29 23:02:02 +02:00
Martin Storsjö
573b1de2d7 movenc: Don't use track_id to decide which track is the first in a moof
If one track doesn't have any samples within a moof, no traf/trun
is written for it. When the omit_tfhd_offset flag is set, none
of the tfhd atoms have any base_data_offset set, and the implicit
offset (end of previous track fragment data, or start of the moof
for the first trun) is used.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-29 23:01:27 +02:00
Michael Niedermayer
99c26805e9 Merge commit 'c2c22c75cf89e2faab34d1ee1d392cfb065439ea'
* commit 'c2c22c75cf89e2faab34d1ee1d392cfb065439ea':
  movenc: Write tfdt atoms

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-14 22:03:51 +02:00
Martin Storsjö
c2c22c75cf movenc: Write tfdt atoms
These allow getting the absolute start timestamp of a fragment
without reading preceding timestamps. This fixes sync between
tracks if starting from fragments in different streams that don't
align exactly.

This also is a prerequisite for producing DASH content.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-14 13:52:32 +03:00
Benoit Fouet
f87134c7a1 avformat/movenc: add support for syncframes concatenation for E-AC-3.
E-AC-3 samples should contain 6 audio blocks, so concatenate syncframes
in order to achieve this.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-13 19:24:06 +02:00
Michael Niedermayer
094b3ce835 Merge commit 'e44ee1eb8db7393e9d43207c2e1812720e292e6d'
* commit 'e44ee1eb8db7393e9d43207c2e1812720e292e6d':
  movenc: Simplify code by using an existing local pointer

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-13 01:15:20 +02:00
Michael Niedermayer
20a66868a2 Merge commit 'dad12ce452a9d69c0d9d53c375003947d5f1b02e'
* commit 'dad12ce452a9d69c0d9d53c375003947d5f1b02e':
  movenc: Print a warning for an unhandled case of nonzero start dts with empty_moov

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-13 01:10:13 +02:00
Michael Niedermayer
ca5a77191b Merge commit 'dbb472cb2f2f799295a12b4922a6a8be2cccfdee'
* commit 'dbb472cb2f2f799295a12b4922a6a8be2cccfdee':
  movenc: Write edit lists for fragmented files as well, if necessary

Conflicts:
	libavformat/movenc.c

The default for writing EDTS for fragmented mp4 is left at disabled
this can be overridden via command line with -use_editlist
but EDTS + fragments still does not fully work, which is why it is
left disabled by default

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-13 01:02:36 +02:00
Michael Niedermayer
687cc836ea Merge commit '95ee4e2ce774e0339632d067161596bf3dadfc72'
* commit '95ee4e2ce774e0339632d067161596bf3dadfc72':
  movenc: Add some comments explaining subtle details in writing the edit lists

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-12 22:48:49 +02:00
Michael Niedermayer
031285dedf Merge commit '72f801619a1ae91969fee9a7d72519422433c998'
* commit '72f801619a1ae91969fee9a7d72519422433c998':
  movenc: Adjust edit lists to trim out parts of tracks with negative pts

Conflicts:
	libavformat/movenc.c

See: 66b45d8f7a
See: 14fd34d73b
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-12 22:39:17 +02:00
Martin Storsjö
e44ee1eb8d movenc: Simplify code by using an existing local pointer
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-12 17:48:09 +03:00
Martin Storsjö
dad12ce452 movenc: Print a warning for an unhandled case of nonzero start dts with empty_moov
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-12 17:46:56 +03:00
Martin Storsjö
dbb472cb2f movenc: Write edit lists for fragmented files as well, if necessary
This is necessary to get the right timestamp offset for content
that starts with dts != 0.

This currently only helps when writing fragmented files with a non-empty
moov atom. When writing an empty moov atom, we don't have any packets
yet, so we don't know the starting dts for the tracks.

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-12 17:46:31 +03:00
Martin Storsjö
95ee4e2ce7 movenc: Add some comments explaining subtle details in writing the edit lists
Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-12 17:46:01 +03:00
Michael Niedermayer
72f801619a movenc: Adjust edit lists to trim out parts of tracks with negative pts
This makes sure that audio preroll for e.g. AAC is signaled correctly.

Previously we only wrote the edit list correctly if we had negative
dts but started with pts == 0 (e.g. for video with B-frames).

Signed-off-by: Martin Storsjö <martin@martin.st>
2014-10-12 17:45:55 +03:00
Benoit Fouet
5e6fd132ff avformat/movenc: add EAC3 muxing support.
Support only one independent substream right now, and only syncframes
containing 6 blocks.

Fixes part of ticket #3074

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-10 19:07:08 +02:00
Michael Niedermayer
f2e53808e3 avformat/movenc: automatically set AVC-Intra tag
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-01 16:39:20 +02:00
Michael Niedermayer
23f0e2edec avformat/movenc: AVC Intra support
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-01 16:39:13 +02:00
Michael Niedermayer
ddc6adaa28 Merge commit '4d55e9de27894ddfb337b28cd7aa6d14a12666d2'
* commit '4d55e9de27894ddfb337b28cd7aa6d14a12666d2':
  vc1: Split bits used in libavformat into a separate header

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-09-04 20:09:01 +02:00
Diego Biurrun
4d55e9de27 vc1: Split bits used in libavformat into a separate header
This reduces inter-library dependencies.
2014-09-04 07:11:03 -07:00
Moritz Barsnick
66d02d3ca6 align and correct messages regarding bitstream filters
The messages regarding the recommended use of bitstream filters are somewhat different.
This also adds the ":v" stream specifier to "-bsf h264_mp4toannexb".

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-19 20:18:01 +02:00
Michael Niedermayer
60dbed6067 Merge commit '4b1f5e5090abed6c618c8ba380cd7d28d140f867'
* commit '4b1f5e5090abed6c618c8ba380cd7d28d140f867':
  cosmetics: Write NULL pointer inequality checks more compactly

Conflicts:
	libavcodec/dvdsubdec.c
	libavcodec/h263dec.c
	libavcodec/libxvid.c
	libavcodec/rv10.c
	libavcodec/utils.c
	libavformat/format.c
	libavformat/matroskadec.c
	libavformat/segment.c
	libavutil/opt.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-15 21:26:12 +02:00
Michael Niedermayer
fb33bff990 Merge commit 'f929ab0569ff31ed5a59b0b0adb7ce09df3fca39'
* commit 'f929ab0569ff31ed5a59b0b0adb7ce09df3fca39':
  cosmetics: Write NULL pointer equality checks more compactly

Conflicts:
	cmdutils.c
	ffmpeg_opt.c
	ffplay.c
	libavcodec/dvbsub.c
	libavcodec/dvdsubdec.c
	libavcodec/dvdsubenc.c
	libavcodec/dxa.c
	libavcodec/libxvid_rc.c
	libavcodec/mpegvideo.c
	libavcodec/mpegvideo_enc.c
	libavcodec/rv10.c
	libavcodec/tiffenc.c
	libavcodec/utils.c
	libavcodec/vc1dec.c
	libavcodec/zmbv.c
	libavdevice/v4l2.c
	libavformat/matroskadec.c
	libavformat/movenc.c
	libavformat/sdp.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-15 21:00:50 +02:00
Gabriel Dume
4b1f5e5090 cosmetics: Write NULL pointer inequality checks more compactly
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-15 05:34:13 -07:00
Gabriel Dume
f929ab0569 cosmetics: Write NULL pointer equality checks more compactly
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-15 03:18:18 -07:00
Michael Niedermayer
49456a95eb avformat/movenc: Fix printf type
Found-by: Timothy Gu <timothygu99@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-11 00:09:09 +02:00
Mark Reid
cab39afb1a avformat/movenc: check that reel_name length doesn't exceed UINT16_MAX
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-10 21:32:05 +02:00
Mark Reid
d6af706eee avformat/movenc: write reel_name metadata to tmcd atom
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-09 03:08:25 +02:00
Marek Fort
4e70104aba avformat/movenc: XMP metadata support.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-07 20:11:09 +02:00
Michael Niedermayer
1c59419419 Merge commit 'b50173a4dd47b9c3c89845b781fa958ccf860929'
* commit 'b50173a4dd47b9c3c89845b781fa958ccf860929':
  movenc: fix QT chapter track character encoding

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-07 02:54:23 +02:00
Michael Niedermayer
403367d5a9 Merge commit 'da9cc22d5bd5f59756c2037b02966376da2cf323'
* commit 'da9cc22d5bd5f59756c2037b02966376da2cf323':
  movenc: add track title to tracks

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-07 02:42:15 +02:00
Michael Niedermayer
71f33051e5 Merge commit 'd9432789bd119f0e37bcf65cebda05d36aafd4ed'
* commit 'd9432789bd119f0e37bcf65cebda05d36aafd4ed':
  movenc: remove pointless loop around BITEXACT test

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-07 02:35:39 +02:00
John Stebbins
b50173a4dd movenc: fix QT chapter track character encoding
An encoding ("encd") box is required to tell QT that the string is UTF8
2014-08-06 13:27:17 -07:00
John Stebbins
da9cc22d5b movenc: add track title to tracks 2014-08-06 13:27:17 -07:00
John Stebbins
d9432789bd movenc: remove pointless loop around BITEXACT test 2014-08-06 13:27:17 -07:00
Michael Niedermayer
a53a107a2f Merge commit '0897d2fdc7755849c3ae58d8b543ef734c200d3c'
* commit '0897d2fdc7755849c3ae58d8b543ef734c200d3c':
  movenc: Add option to disable nero chapters

Conflicts:
	doc/muxers.texi

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-05 13:58:10 +02: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
gerion.entrup@t-online.de
f2855eb4d7 avformat/movenc: add m4b to list of ipod playable files
m4b is the extension used by iDevices to detect audiobooks.
2014-07-30 04:19:58 +02:00
Carl Eugen Hoyos
0e70266bbf Write valid free atom when -moov_size is specified.
Fixes ticket #3769.
2014-07-18 23:11:11 +02:00
Michael Niedermayer
6821572499 avformat/movenc: dont mark multichannel as mono tracks as containing the center channel
Fixes Ticket3727

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-14 17:11:11 +02:00
Michael Niedermayer
375d7ee805 Merge commit 'df2aa22203afc9377832bdf800df5dbd3aa9687e'
* commit 'df2aa22203afc9377832bdf800df5dbd3aa9687e':
  mov: Clarify tkhd flag settings

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-11 13:07:26 +02:00
Michael Niedermayer
4c91599484 Merge commit 'f90729699db9ede2bef2b28000f1795dab1b8996'
* commit 'f90729699db9ede2bef2b28000f1795dab1b8996':
  mov: Do not group tracks if more than one is enabled per type

Conflicts:
	libavformat/movenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-11 12:41:57 +02:00
Luca Barbato
df2aa22203 mov: Clarify tkhd flag settings 2014-07-11 11:07:35 +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
Mark Boorer
352756ecae avformat/movenc: respect color_range when encoding dnxhd.
Set the ACLR atom appropriately for legal / full range.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-09 00:35:23 +02:00
Michael Niedermayer
5a4edf6f0d avformat/movenc: check that the video resolution is supported
Resolutions are stored as 16bit integers

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-08 16:17:44 +02:00
Michael Niedermayer
ac293b6685 Merge commit '194be1f43ea391eb986732707435176e579265aa'
* commit '194be1f43ea391eb986732707435176e579265aa':
  lavf: switch to AVStream.time_base as the hint for the muxer timebase

Conflicts:
	doc/APIchanges
	libavformat/filmstripenc.c
	libavformat/movenc.c
	libavformat/mxfenc.c
	libavformat/oggenc.c
	libavformat/swf.h
	libavformat/version.h
	tests/ref/lavf/mkv

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-18 19:49:17 +02:00
Anton Khirnov
194be1f43e lavf: switch to AVStream.time_base as the hint for the muxer timebase
Previously, AVStream.codec.time_base was used for that purpose, which
was quite confusing for the callers. This change also opens the path for
removing AVStream.codec.

The change in the lavf-mkv test is due to the native timebase (1/1000)
being used instead of the default one (1/90000), so the packets are now
sent to the crc muxer in the same order in which they are demuxed
(previously some of them got reordered because of inexact timestamp
conversion).
2014-06-18 15:12:34 +02:00
Michael Niedermayer
7c3af60016 avformat/movenc: use av_malloc(z)_array()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-08 15:26:03 +02:00
Michael Niedermayer
a72df4dadc Merge commit 'cf6977712c9e5abe6dc55289f6322ccbf10321a9'
* commit 'cf6977712c9e5abe6dc55289f6322ccbf10321a9':
  movenc: write avg_frame_rate as the framerate, not the codec timebase

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-29 13:07:33 +02:00
Anton Khirnov
cf6977712c movenc: write avg_frame_rate as the framerate, not the codec timebase 2014-05-29 08:01:23 +02:00
Michael Niedermayer
744df0a031 avformat/movenc: Check that packet duration is valid in ff_mov_write_packet()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-23 04:00:29 +02:00
Michael Niedermayer
5771efde87 Merge commit '0ba5299a805e9ccaef1a757381fc2ada4d54b8a1'
* commit '0ba5299a805e9ccaef1a757381fc2ada4d54b8a1':
  movenc: use the "encoder" metadata tag to write stsd Compressorname

Conflicts:
	libavformat/movenc.c
	libavformat/movenc.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-18 22:29:27 +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
Michael Niedermayer
eacf7d650d Merge commit '0c1959b056f6ccaa2eee2c824352ba93c8e36d52'
* commit '0c1959b056f6ccaa2eee2c824352ba93c8e36d52':
  lavf: add AVFMT_FLAG_BITEXACT.

Conflicts:
	doc/APIchanges
	libavformat/avformat.h
	libavformat/flacenc.c
	libavformat/movenc.c
	libavformat/oggenc.c
	libavformat/options_table.h
	libavformat/version.h
	tests/fate/video.mak

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-15 19:16:57 +02:00
Anton Khirnov
0c1959b056 lavf: add AVFMT_FLAG_BITEXACT.
Use it instead of checking CODEC_FLAG_BITEXACT in the first stream's
codec context.

Using codec options inside lavf is fragile and can easily break when the
muxing codec context is not the encoding context.
2014-05-15 07:42:07 +02:00
Michael Niedermayer
dc6b99d6b2 avformat/movenc: Check ff_put_wav_header() return code
Fixes CID1212260
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-10 03:51:49 +02:00
Daniel Verkamp
5e7d21c7ad ff_put_wav_header: add flag to force WAVEFORMATEX
Partially undoes commit 2c4e08d893:

    riff: always generate a proper WAVEFORMATEX structure in
    ff_put_wav_header

A new flag, FF_PUT_WAV_HEADER_FORCE_WAVEFORMATEX, is added to force the
use of WAVEFORMATEX rather than PCMWAVEFORMAT even for PCM codecs.

This flag is used in the Matroska muxer (the cause of the original
change) and in the ASF muxer, because the specifications for
these formats indicate explicitly that WAVEFORMATEX should be used.

Muxers for other formats will return to the original behavior of writing
PCMWAVEFORMAT when writing a header for raw PCM.

In particular, this causes raw PCM in WAV to generate the canonical
44-byte header expected by some tools.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-30 16:41:35 +02:00
Michael Niedermayer
af165acefa avformat/movenc: dont store invalid tapt atom
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-25 21:51:34 +02:00
Michael Niedermayer
c9e0f7a080 Merge commit '99e22b7859177f6d3ed6121040924b337dce5497'
* commit '99e22b7859177f6d3ed6121040924b337dce5497':
  mov: Emit the correct tags for clcp tracks

Conflicts:
	libavformat/movenc.c

See: a5f6720f13
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-25 21:33:18 +02:00
Miles Gould
99e22b7859 mov: Emit the correct tags for clcp tracks
Bug-Id: 664

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-04-25 17:38:19 +02:00
Aidan Skinner
802385dbc2 mov: Write prof section of tapt tag
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-04-25 17:38:19 +02:00
Carl Eugen Hoyos
8b122937af Warn if rawvideo and an unreadable pix_fmt are written.
Print an error if a combination of rawvideo and an unusual pix_fmt
that will be impossible to decode are written to avi or mov.
Fixes ticket #3545.
2014-04-11 23:35:11 +02:00
Michael Niedermayer
45ba9d8545 Merge commit 'cba4e6062a02d5bf684e13a770be88aa1fec717e'
* commit 'cba4e6062a02d5bf684e13a770be88aa1fec717e':
  More correct printf format specifiers

Conflicts:
	libavcodec/h264_ps.c
	libavcodec/h264_refs.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-02 02:54:09 +02:00
Diego Biurrun
cba4e6062a More correct printf format specifiers
This avoids compiler warnings about argument and specifier type mismatch.
2014-04-02 00:27:22 +02:00
Michael Niedermayer
9d013fe840 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  mov: Unbreak sbtl writing

Conflicts:
	libavformat/movenc.c

See: 8a9d0a1561
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-31 22:08:11 +02:00
Michael Niedermayer
f94371b1db mov: Unbreak sbtl writing 2014-03-31 19:31:41 +02:00
Michael Niedermayer
8a9d0a1561 avformat/movenc: fix if vs if else
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-29 15:38:20 +01:00