summaryrefslogtreecommitdiffstats
path: root/libavformat/movenc.c
Commit message (Collapse)AuthorAgeFilesLines
* avformat/movenc: Write version 2 of audio atom if channels is not knownMichael Niedermayer2018-07-161-1/+1
| | | | | | | | | | | | | The version 1 needs the channel count and would divide by 0 Fixes: division by 0 Fixes: fpe_movenc.c_1108_1.ogg Fixes: fpe_movenc.c_1108_2.ogg Fixes: fpe_movenc.c_1108_3.wav Found-by: #CHEN HONGXU# <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]> (cherry picked from commit fa19fbcf712a6a6cc5a5cfdc3254a97b9bce6582) Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: Check input sample countMichael Niedermayer2018-07-161-0/+5
| | | | | | | | | | | | | | | | Fixes: division by 0 Fixes: fpe_movenc.c_199_1.wav Fixes: fpe_movenc.c_199_2.wav Fixes: fpe_movenc.c_199_3.wav Fixes: fpe_movenc.c_199_4.wav Fixes: fpe_movenc.c_199_5.wav Fixes: fpe_movenc.c_199_6.wav Fixes: fpe_movenc.c_199_7.wav Found-by: #CHEN HONGXU# <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]> (cherry picked from commit 3a2d21bc5f97aa0161db3ae731fc2732be6108b8) Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: Use mov->fc consistently for av_log()Michael Niedermayer2018-07-161-1/+1
| | | | | | Signed-off-by: Michael Niedermayer <[email protected]> (cherry picked from commit 872ea3dfe565098570ad213a6f1eb00a805aec5d) Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: Do not pass AVCodecParameters in avpriv_request_sampleMichael Niedermayer2018-07-161-1/+1
| | | | | | | | | | Fixes: out of array read Fixes: ffmpeg_crash_8.avi Found-by: Thuan Pham, Marcel Böhme, Andrew Santosa and Alexandru Razvan Caciulescu with AFLSmart Signed-off-by: Michael Niedermayer <[email protected]> (cherry picked from commit 95556e27e2c1d56d9e18f5db34d6f756f3011148) Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: Check that frame_types other than ↵Michael Niedermayer2018-07-161-0/+6
| | | | | | | | | | | | EAC3_FRAME_TYPE_INDEPENDENT have a supported substream id Fixes: out of array access Fixes: ffmpeg_bof_1.avi Found-by: Thuan Pham, Marcel Böhme, Andrew Santosa and Alexandru Razvan Caciulescu with AFLSmart Signed-off-by: Michael Niedermayer <[email protected]> (cherry picked from commit ed22dc22216f74c75ee7901f82649e1ff725ba50) Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: fix recognization of cover image streamsTimo Teräs2018-06-151-18/+18
| | | | | | | | | | | | For chapter images, the mov demux produces streams with disposition set to attached_pic+timed_thumbnails. This patch fixes to properly recognize streams that should be encoded as cover image (ones with only and only attached_pic disposition set). Signed-off-by: Timo Teräs <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]> (cherry picked from commit 2223811b015926fec68473a08016d40cea0989b2) Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: properly handle cover image codecsTimo Teräs2018-06-151-18/+12
| | | | | | | | | | | | | Find codec tag for attached images using appropriate list of supported image formats. This fixes writing the cover image to m4v/m4a and other container formats that do not allow these codecs as a track. Signed-off-by: Timo Teräs <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]> (cherry picked from commit 12205d2c896b7edbc929d4886e7bfda4b53538e5) Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: support writing iTunes cover imageTimo Teräs2018-04-171-5/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes https://trac.ffmpeg.org/ticket/2798 This makes movenc handle AV_DISPOSITION_ATTACHED_PIC and write the associated pictures in iTunes cover atom. This corresponds to how 'mov' demuxer parses and exposes the cover images when reading. Most of the existing track handling loops properly ignore these 'virtual streams' as MOVTrack->entry is never incremented for them. However, additional tests are added as needed to ignore them. Tested to produce valid output with: ffmpeg -i movie.mp4 -i thumb.jpg -disposition:v:1 attached_pic \ -map 0 -map 1 -c copy movie-with-cover.mp4 The cover image is also copied correctly with: ffmpeg -i movie-with-cover.mp4 -map 0 -c copy out.mp4 AtomicParseley says that the attached_pic stream is properly not visible in the main tracks of the file. Signed-off-by: Timo Teräs <[email protected]> (cherry picked from commit 9af71b326fda1c6f32a26d465f7740110113e759)
* avformat/movenc: forbid muxing AV1 streams until the spec is finishedJames Almer2018-04-161-0/+4
| | | | | | | | This prevents creating potentially broken files, as both the AV1 and the AV1 in ISOMBFF specs are unfinished. Signed-off-by: James Almer <[email protected]> (cherry picked from commit 62bdbb5ce0c54b9f73c9b2580467ab1e6d76b70b)
* avformat/movenc: use correct iTunes copyright atomTimo Teräs2018-04-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Support for writing copyright metadata was added in commit bed4fc54c9 for 3GP, MOV and iTunes metadata. 3GP and MOV cases are formally specified. However, iTunes format does not have specification, and it seems to have been assumed that it would use the same atom as MOV (both being Apple formats). However, Apple uses 'cprt' atom for iTunes metadata (do note that the iTunes 'cprt' encoding is generic iTunes ItemList atom, not the 3GP 'cprt' encoding. These are also inside different parent atoms). Most references trying to document iTunes atoms mention only the 'cprt' tag. See: - http://atomicparsley.sourceforge.net/mpeg-4files.html - http://mutagen.readthedocs.io/en/latest/api/mp4.html Same applies to other software supporting this tag. Most of them encode and decode only the 'cprt' atom. ffmpeg mov demuxer supports both atoms in this context. There are few pieces of other software that support similarly both 'cprt' and the incorrect '\251cpy' atom in this context. I believe they do it in order to read the ffmpeg encoded incorrect copyright atom. In light of the above this changes the copyright atom to 'cprt' as it seems to be supported univerally and is the correct atom to use. Signed-off-by: Timo Teräs <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: add rtp_hinting_needed() helper functionTimo Teräs2018-04-041-18/+12
| | | | | | | | This is shared test and this simplifies code a bit. Follow up commit will have additional tests for this function. Signed-off-by: Timo Teräs <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* lavf/movenc: write track title metadata for mov filesCourtland Idstrom2018-03-221-1/+1
| | | | | | | | | Track title (atom 'name') is a well defined user data atom for mov files. Existing code (for mp4) only writes title metadata if present. Relevant reference docs: https://developer.apple.com/library/content/documentation/QuickTime/Reference/QTRef_AtomsResources/Content/QTRef_AtomsResources4.html#//apple_ref/doc/uid/TP40004285-DontLinkChapterID_1--udta- https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-63839
* avformat/movenc: move the concatenated eac3 packet referenceJames Almer2018-03-151-4/+1
| | | | | | | Simplifies code. Reviewed-by: Michael Niedermayer <[email protected]> Signed-off-by: James Almer <[email protected]>
* avformat/movenc: addition of flag to fragment at every frameVishwanath Dixit2018-02-201-3/+7
| | | | Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/mov: add VP8 codec supportJames Almer2018-02-061-0/+5
| | | | | | | | | | | | | Demuxing only. Muxing is disabled as altref frame handling is not defined in the spec, and there's no way to know the presence of such frames during stream initialization. Based on a patch by Steven Liu. Fixes ticket #7000 Reviewed-by: Carl Eugen Hoyos <[email protected]> Signed-off-by: James Almer <[email protected]>
* avformat: migrate to AVFormatContext->urlMarton Balint2018-01-281-5/+5
| | | | Signed-off-by: Marton Balint <[email protected]>
* avformat/movenc: Add support for more colorspacesSteven Robertson2017-12-151-9/+16
| | | | | | | | With FCPX 10.4, Apple has expanded the set of colorspace, primaries, and trc flags officially supported in QuickTime files. The expanded set matches the codepoints used in ffmpeg and many other specs. Signed-off-by: Michael Niedermayer <[email protected]>
* lavf/movenc: add sdtp (sample dependency) boxJohn Stebbins2017-12-021-0/+30
| | | | | | The sdtp is required by the AppleTV 4K in order to play 2160p60 video. Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: write clap atom for uncompressed yuv in movDave Rice2017-11-201-0/+19
| | | | | | fixes 6145 Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: correct ImageDescription for uncompressed ycbcrDave Rice2017-11-201-3/+17
| | | | | | | Per https://developer.apple.com/library/content/technotes/tn2162/_index.html Signed-off-by: Michael Niedermayer <[email protected]>
* lavf/movenc: allow writing avc3 sample entry typeJohn Stebbins2017-11-161-0/+1
| | | | | | | The avc3 sample entry type is useful for adaptive streaming. It permits parameter sets to be written inline in the video stream. Signed-off-by: Michael Niedermayer <[email protected]>
* avformat/movenc: let avpriv_ac3_parse_header() allocate the AC3HeaderInfo structJames Almer2017-11-011-29/+43
| | | | | | | This removes sizeof(AC3HeaderInfo) from the ABI. Reviewed-by: Michael Niedermayer <[email protected]> Signed-off-by: James Almer <[email protected]>
* movenc: add m4b to ipod format extensionsLukas Stabe2017-10-301-1/+1
| | | | | | | | m4b is commonly used as extension for m4a audiobook files. The format is exactly the same. The only thing that differs is the extension. Signed-off-by: Michael Niedermayer <[email protected]>
* Merge commit '50a1c66cf6ab7eb683daaa9e2da3869fa3a54609'James Almer2017-10-271-8/+9
|\ | | | | | | | | | | | | | | | | | | | | * commit '50a1c66cf6ab7eb683daaa9e2da3869fa3a54609': ac3_parser: add a public function for parsing the data required by the demuxer avpriv_ac3_parse_header() is left in place but without the GetBitContext parameter, as the mov muxer requires a lot more fields than just bitstream_id and frame_size from the AC3HeaderInfo struct. Merged-by: James Almer <[email protected]>
| * Use bitstream_init8() where appropriateDiego Biurrun2017-02-071-2/+2
| |
| * Mark some arrays that never change as const.Anton Khirnov2017-02-011-1/+1
| |
| * mov: Convert to the new bitstream readerAlexandra Hájková2017-01-131-20/+21
| |
| * Use correct printf conversion specifiers for POSIX integer typesDiego Biurrun2016-12-231-1/+1
| |
* | movenc: take packet dts shifting into mention in check_pktJan Ekström2017-10-041-0/+6
| | | | | | | | | | | | | | | | | | | | | | This FFmpeg-specific "fuzzer fix" was never perfect, but now it stopped encoding of actual content with a big enough DTS shift. This returns the function to its original state of results before negative CTS offsets were added. I remember dealing with this function before, but somehow had forgotten about it during VDD. The test cases not tripping this over also didn't help.
* | movenc: Add an option for enabling negative CTS offsetsMartin Storsjö2017-09-281-4/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | This reduces the need for an edit list; streams that start with e.g. dts=-1, pts=0 can be encoded as dts=0, pts=0 (which is valid in mov/mp4) by shifting the dts values of all packets forward. This avoids the need for edit lists for such streams (while they still are needed for audio streams with encoder delay). This eases conformance with the DASH-IF interoperability guidelines. Signed-off-by: Martin Storsjö <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* | avformat: replace all uses of av_copy_packet()James Almer2017-09-251-3/+4
| | | | | | | | Signed-off-by: James Almer <[email protected]>
* | avformat/movenc: reindent after the previous commitJames Almer2017-08-091-25/+25
| |
* | lavf/movenc.c: Set sgpd and sbgp atoms to represent decoder delay for AAC.Sasi Inguva2017-08-101-7/+15
| | | | | | | | | | | | | | | | According to https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFAppenG/QTFFAppenG.html and ISO-IEC-14496-12 Section 10.1.1.1 and 10.1.1.3 Signed-off-by: Sasi Inguva <[email protected]> Reviewed-by: Derek Buitenhuis <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* | lavf/movenc: support GPMF track (gpmd) remuxingClément Bœsch2017-07-241-0/+25
| | | | | | | | | | See https://github.com/gopro/gpmf-parser for more information on the data stream itself.
* | movenc: Add 'keywords' metadataKieran O'Leary2017-07-131-0/+2
| | | | | | | | Signed-off-by: Derek Buitenhuis <[email protected]>
* | movenc: allow alternative hvc1 h.265 codec tagJohn Stebbins2017-07-051-0/+1
| | | | | | | | | | | | | | | | If AVCodecParameters.codec_tag is 'hvc1' use it instead of 'hev1' for h.265 streams. QuickTime (and other Apple software) requires 'hvc1'. (cherry picked from commit 84ab1cc437fa47a00532f305b9fe15b5b66c8c5e) Signed-off-by: Derek Buitenhuis <[email protected]>
* | movenc: write correct format hvcc when tag is hvc1John Stebbins2017-07-051-1/+4
| | | | | | | | | | (cherry picked from commit 1ea9b7fdf99b60c0db95a2ce97b2108469bbb245) Signed-off-by: Derek Buitenhuis <[email protected]>
* | movenc: move tags definitions to where they are usedJohn Stebbins2017-07-051-31/+31
| | | | | | | | | | (cherry picked from commit 1c64bae648eeb39c8d8a8d81ee142b9eec9fae7b) Signed-off-by: Derek Buitenhuis <[email protected]>
* | movenc: simplify codec_tag lookupJohn Stebbins2017-07-051-53/+15
| | | | | | | | | | | | | | | | | | | | | | mux.c init_muxer() already sets codec_tag correctly in the cases simplified here. This also adds the capability to support alternative tags for the same codec_id. (cherry picked from commit f6f86f432fe51526a7aad2bdb025d6a45d239883) Signed-off-by: Derek Buitenhuis <[email protected]>
* | movenc: use correct tag list for AVOutputFormat.codec_tagJohn Stebbins2017-07-041-3/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ff_mp4_obj_type contains the wrong type of tags for AVOutputFormat.codec_tag. AVOutputFormat.codec_tag is used to validate AVCodecParameters.codec_tag so needs to be the same type of tag. Creates new tag lists for mp4 and ismv. New tag lists support same list of codecs found in ff_mp4_obj_type. psp uses the same tag list as mp4 since these both use mp4_get_codec_tag to look up tags. (cherry picked from commit 713efb2c0d013a42be4051adb7cd90a7c2cbbb4f) Signed-off-by: Derek Buitenhuis <[email protected]>
* | movenc: encryption with time code track fixerankor2017-05-281-3/+3
| | | | | | | | | | | | | | | | | | instead of deciding whether to encrypt based on the encryption scheme, decide according to whether cenc was initialized or not. mov_create_timecode_track calls ff_mov_write_packet with a track that doesn't have cenc initialized. Signed-off-by: Michael Niedermayer <[email protected]>
* | avformat/movenc: always check for new extradata on a packetJames Almer2017-05-241-16/+18
| | | | | | | | | | | | | | | | Don't just look at zero sized packets, and also check for AAC extradata updates, in preparation for the following patches. Reviewed-by: Michael Niedermayer <[email protected]> Signed-off-by: James Almer <[email protected]>
* | avformat/movenc: remove experimental check for VP9 streamsJames Almer2017-05-171-7/+0
| | | | | | | | The muxer has been updated and is now complaint with the v1.0 of the spec.
* | movenc/isom: update vpcC box to version 1.0 of the specificationHendrik Leppkes2017-05-161-1/+2
| | | | | | | | | | | | | | | | | | This brings our generation of the vpcC box up to date to version 1.0 of the VP Codec ISO Media File Format Binding. Specifically, color/transfer properties are now written with values based on ISO/IEC 23001-8, which is the same reference specification the AVColor* enumerations are based on.
* | avformat/movenc: Explicitly address potential division by zero.Lucas Cooper2017-04-291-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | find_fps attempts to infer framerate from AVCodec's timebase. When this results in a frame rate that isn't explicitly marked as supported in av_timecode_check_frame_rate, find_fps returns the AVStream's avg_frame_rate, which, per avformat.h, _may_ be set (or not). mov_get_mpeg2_xdcam_codec_tag, mov_get_h264_codec_tag and find_compressor attempt to call av_q2d on the return value of find_fps, which in the above case, may result in division by zero and therefore, an undefined frame rate when NaN is converted to int. Signed-off-by: Michael Niedermayer <[email protected]>
* | avformat/movenc: Fix potential leak of sgpd_entries array.Matthew Gregan2017-04-121-1/+3
| | | | | | | | | | Signed-off-by: Matthew Gregan <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* | avformat/movenc: Fix mix of declaration and statementMichael Niedermayer2017-04-111-4/+5
| | | | | | | | Signed-off-by: Michael Niedermayer <[email protected]>
* | avformat/movenc: Add experimental muxing support for Opus in ISO BMFF (MP4).Matthew Gregan2017-04-111-8/+129
| | | | | | | | | | | | | | | | | | Based on the draft spec at http://vfrmaniac.fushizen.eu/contents/opus_in_isobmff.html '-strict -2' is required to create files in this format. Signed-off-by: Matthew Gregan <[email protected]> Signed-off-by: Michael Niedermayer <[email protected]>
* | avformat/movenc: auto insert vp9_superframe bsf when neededJames Almer2017-04-101-0/+2
| | | | | | | | | | | | | | Experimental VP9 support was added to the muxer recently. Reviewed-by: Ronald S. Bultje <[email protected]> Signed-off-by: James Almer <[email protected]>
* | Fix all -Wformat warnings raised by DJGPPClément Bœsch2017-03-291-3/+3
| |