Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-05-22avformat/bintext: Reduce detection for random .bin files as it more likely ↵Michael Niedermayer
is not a multimedia related file Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-22libavformat: add mbedTLS based TLSThomas Volkert
Signed-off-by: James Almer <jamrial@gmail.com>
2018-05-21avformat/mpegts: fix memory leak with merge_pmt_versions=1Aman Gupta
Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-21avformat/mpegts: rename variable to clarify meaningAman Gupta
Both stream_id and stream_identifier are used in this file, and have different meanings. The latter comes from the stream_identifier_descriptor. Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-21avformat/mov: Only fail for STCO/STSC contradictions if both existMichael Niedermayer
Fixes regression with playback of GF9720Repeal20the20Eighth20with20Helen20Linehan.m4a See: crbug 822666 Found-by: "Mattias Wadman <mattias.wadman@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-21avformat/mov: Break out early if chunk_count is 0 in mov_build_index()Michael Niedermayer
Without this some operations might overflow (undefined behavior) even though the index adding loop would never execute No testcase known Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-20avformat/mp3dec: require 90% of a file to be mp3 if only 1 mp3 frame is ↵Michael Niedermayer
found in sequence This eliminates several low score detections of non mp3 files Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-20avformat/mp3dec: Require 50% of the file to be mp3 frames in the ↵Michael Niedermayer
maxframes>200 probing test This corrects several misdetections of large files Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-20avformat/mp3dec: Require probing data to be 50% mp3 frames for low score ↵Michael Niedermayer
probing to succeed This massively reduces the detection of random data as low score mp3 It may improve security by making it harder to read non multimedia data Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-19avformat/mpegts: add merge_pmt_versions optionAman Gupta
This new optional flag makes it easier to deal with mpegts samples where the PMT is updated and elementary streams move to different PIDs in the middle of playback. Previously, new AVStreams were created per PID, and it was up to the user to figure out which streams had migrated to a new PID (by iterating over the list of AVProgram and making guesses), and switch seamlessly to the new AVStream during playback. Transcoding or remuxing these streams with ffmpeg on the CLI was also quite painful, and the user would need to extract each set of PIDs into a separate file and then stitch them back together. With this new option, the mpegts demuxer will automatically detect PMT changes and feed data from the new PID to the original AVStream that was created for the orignal PID. For mpegts samples with stream_identifier_descriptor available, the unique ID is used to merge PIDs together. If the stream id is not available, the demuxer attempts to map PIDs based on their position within the PMT. With this change, I am able to playback and transcode/remux these two samples which previously caused issues: https://tmm1.s3.amazonaws.com/pmt-version-change.ts https://kuroko.fushizen.eu/videos/pid_switch_sample.ts I also have another longer sample in which the PMT changes repeatedly and ES streams move to different pids three times during playback: https://tmm1.s3.amazonaws.com/multiple-pmt-change.ts Demuxing this sample with the new option shows several new log messages as the PMT changes are handled: [mpegts] detected PMT change (program=1, version=3/6, pcr_pid=0xf98/0xfb7) [mpegts] re-using existing video stream 0 (pid=0xf98) for new pid=0xfb7 [mpegts] re-using existing audio stream 1 (pid=0xf99) for new pid=0xfb8 [mpegts] re-using existing audio stream 2 (pid=0xf9a) for new pid=0xfb9 [mpegts] detected PMT change (program=1, version=6/3, pcr_pid=0xfb7/0xf98) [mpegts] detected PMT change (program=1, version=3/4, pcr_pid=0xf98/0xf9b) [mpegts] re-using existing video stream 0 (pid=0xf98) for new pid=0xf9b [mpegts] re-using existing audio stream 1 (pid=0xf99) for new pid=0xf9c [mpegts] re-using existing audio stream 2 (pid=0xf9a) for new pid=0xf9d [mpegts] detected PMT change (program=1, version=4/5, pcr_pid=0xf9b/0xfa9) [mpegts] re-using existing video stream 0 (pid=0xf98) for new pid=0xfa9 [mpegts] re-using existing audio stream 1 (pid=0xf99) for new pid=0xfaa [mpegts] re-using existing audio stream 2 (pid=0xf9a) for new pid=0xfab [mpegts] detected PMT change (program=1, version=5/6, pcr_pid=0xfa9/0xfb7) Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-19avformat/mpegts: keep track of PMT details in AVProgram/AVStreamAman Gupta
With these fields, the user has enough information to detect PMT changes and switch to new streams when the PMT is updated with new ES pids. To do so, the user would monitor the AVProgram they're interested in for changes to pmt_version. If the version changes, they would iterate over the program's streams to find new streams added with the updated version number. If new versions of streams are found, then the user would first try to replace existing streams where stream_identifier matched. If stream_identifier is not available, then the user would compare pmt_stream_idx instead to replace the stream that was previously at the same position within the PMT. Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-19avformat: add fields to AVProgram/AVStream for PMT change trackingAman Gupta
These fields will allow the mpegts demuxer to expose details about the PMT/program which created the AVProgram and its AVStreams. In mpegts, a PMT which advertises streams has a version number which can be incremented at any time. When the version changes, the pids which correspond to each of it's streams can also change. Since ffmpeg creates a new AVStream per pid by default, an API user needs the ability to (a) detect when the PMT changed, and (b) tell which AVStream were added to replace earlier streams. This has been a long-standing issue with ffmpeg's handling of mpegts streams with PMT changes, and I found two related patches in the wild that attempt to solve the same problem: The first is in MythTV's ffmpeg fork, where they added a void (*streams_changed)(void*); to AVFormatContext and call it from their fork of the mpegts demuxer whenever the PMT changes. The second was proposed by XBMC in https://ffmpeg.org/pipermail/ffmpeg-devel/2012-December/135036.html, where they created a new AVMEDIA_TYPE_DATA stream with id=0 and attempted to send packets to it whenever the PMT changed. Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-18avformat/mpegts: add skip_unknown_pmt optionAman Gupta
Some filtered mpegts streams may erroneously include PMTs for programs that are not advertised in the PAT. This confuses ffmpeg and most players because multiple audio/video streams are created and it is unclear which ones actually contain data. See for example https://tmm1.s3.amazonaws.com/unknown-pmts.ts In this sample, the PAT advertises exactly one program. But the pid it points to for the program's PMT contains PMTs for other programs as well. This is because the broadcaster decided to re-use the same pid for multiple program PMTs. The hardware that filtered the original multi-program stream into a single-program stream did so by rewriting the PAT to contain only the program that was requested. But since it just passed through the PMT pid referenced in the PAT, multiple PMTs are still present for the other programs. Before: Input #0, mpegts, from 'unknown-pmts.ts': Duration: 00:00:10.11, start: 80741.189700, bitrate: 9655 kb/s Program 4 Stream #0:2[0x41]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 11063 kb/s, 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #0:3[0x44](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s Stream #0:4[0x45](spa): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 128 kb/s No Program Stream #0:0[0x31]: Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv), 90k tbr, 90k tbn, 90k tbc Stream #0:1[0x34](eng): Audio: ac3 (AC-3 / 0x332D4341), 0 channels, fltp Stream #0:5[0x51]: Video: mpeg2video ([2][0][0][0] / 0x0002), none, 90k tbr, 90k tbn Stream #0:6[0x54](eng): Audio: ac3 (AC-3 / 0x332D4341), 0 channels With skip_unknown_pmt=1: Input #0, mpegts, from 'unknown-pmts.ts': Duration: 00:00:10.11, start: 80741.189700, bitrate: 9655 kb/s Program 4 Stream #0:0[0x41]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 11063 kb/s, 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc Stream #0:1[0x44](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s Stream #0:2[0x45](spa): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 128 kb/s Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-17avformat/mpegts: tag video streams with still imagesAman Gupta
Parses the video_stream_descriptor (H.222 2.6.2) to look for the still_picture_flag. This is exposed to the user via a new AV_DISPOSITION_STILL_IMAGE. See for example https://tmm1.s3.amazonaws.com/music-choice.ts, whose video stream only updates every ~6 seconds. Signed-off-by: Aman Gupta <aman@tmm1.net> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-17avformat: add skip_estimate_duration_from_ptsAman Gupta
For seekable mpegts streams, duration is calculated from pts by seeking to the end of the file for a pts and subtracting the initial pts to compute a duration. This can be expensive in terms of added latency during probe, especially when streaming over a network. This new option lets you skip the duration calculation, which is useful when you don't care about the value and want to save some overhead. This patch is particularly useful when dealing with live mpegts streams. Normally such streams are not seekable, so durations are not calculated. However in my case I am dealing with a seekable live mpegts stream (networked access to a .ts file which is still being appended to). Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-16avformat/hls: fix seeking around EVENT playlist after media sequence changesAman Gupta
The seek functions use first_timestamp, so keep that up to date as old segments drop off the playlist. Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-15avformat/webm_chunk: always use a static buffer for get_chunk_filenameMarton Balint
My conversation from AVFormatContext->filename to AVFormatContext->url was wrong in this case because get_chunk_filename uses filename as an output buffer, and not as an input buffer. Fixes ticket #7188. Signed-off-by: Marton Balint <cus@passwd.hu>
2018-05-15avformat/mpegts: fix incorrect indentationAman Gupta
Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-15avformat/dashenc: configuring container format optionsVishwanath Dixit
2018-05-14avformat/mpegts: initialize section_buf to fix valgrind test failureAman Gupta
http://fate.ffmpeg.org/report.cgi?slot=x86_64-archlinux-gcc-valgrind&time=20180513001958 Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-12avformat/mpegts: reindent after last changeAman Gupta
Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-12avformat/mpegts: parse sections with multiple tablesAman Gupta
Fixes PMT parsing in some mpegts streams which contain multiple tables within the PMT pid. Previously, the parser assumed only one table was present in each packet, and discarded the rest of the section data after attempting to parse the first table. A similar issue was documented in the BeyondTV software[1], which helped me diagnose the same bug in the ffmpeg mpegts demuxer. I also tried DVBInspector, libdvbpsi's dvbinfo, and tstools' tsinfo to help debug. The former two properly read PMTs with multiple tables, whereas the last has the same bug as ffmpeg. I've created a minimal sample[2] which contains the combined PMT. Here's what ffmpeg probe shows before and after this patch: Before: Input #0, mpegts, from 'combined-pmt-tids.ts': Duration: 00:00:01.08, start: 4932.966167, bitrate: 741 kb/s Program 1 No Program Stream #0:0[0xf9d]: Audio: ac3, 48000 Hz, mono, fltp, 96 kb/s Stream #0:1[0xf9b]: Audio: mp3, 0 channels, fltp Stream #0:2[0xf9c]: Unknown: none After: Input #0, mpegts, from 'combined-pmt-tids.ts': Duration: 00:00:01.11, start: 4932.966167, bitrate: 718 kb/s Program 1 Stream #0:0[0xf9b]: Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv, top first), 29.97 fps, 29.97 tbr, 90k tbn, 90k tbc Stream #0:1[0xf9c](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s Stream #0:2[0xf9d](spa): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 96 kb/s With the patch, the PMT is parsed correctly so the streams are created in the correct order, are associated with "Program 1", and their codecs are set correctly. [1] http://forums.snapstream.com/vb/showpost.php?p=343816&postcount=201 [2] https://s3.amazonaws.com/tmm1/combined-pmt-tids.ts Signed-off-by: Aman Gupta <aman@tmm1.net> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-12avformat/hlsenc: set AVFMT_NODIMENSIONSAman Gupta
Same as previous commit but for mpegts inside HLS. Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-12avformat/mpegtsenc: set AVFMT_NODIMENSIONSAman Gupta
This allows remuxing streams from one mpegts container to another, without requiring avformat_find_stream_info() (or using `ffmpeg -probesize 32` on the cli). Signed-off-by: Aman Gupta <aman@tmm1.net> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-12avformat/mxfenc: Set color siting to 0 for D10-MXFMichael Niedermayer
SMPTE 386M (D-10) lists 4 as value to be used SMPTE 377-1-2009 says "The definitions of 00h (coSiting) and 04h (Rec 601) are equivalent. The value of 04h is deprecated. New MXF encoders shall use the value of 00h instead." Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-12avformat/mxfenc: Add Sample width/height/x offset/y offset, Display x offset ↵Michael Niedermayer
and F2 offset Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-10lavf/network: fix doxygen comments.Jun Zhao
Signed-off-by: Jun Zhao <mypopydev@gmail.com>
2018-05-10avformat/mxfenc: add h264 profilesThomas Mundt
Signed-off-by: Thomas Mundt <tmundt75@gmail.com> Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mpegts: clean up whitespaceAman Gupta
Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-09avformat/mpegts: use MAX_SECTION_SIZE instead of hardcoded valueAman Gupta
Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-09avformat/mpegts: skip non-PMT tids earlierAman Gupta
This mimics the logic flow in all the other callbacks (pat_cb, sdt_cb, m4sl_cb), and avoids calling skip_identical() for non PMT_TID packets. Since skip_identical modifies internal state like MpegTSSectionFilter.last_ver, this change prevents unnecessary reprocessing on some streams which contain multiple tables in the PMT pid. This can be observed with streams from certain US cable providers, which include both tid=0x2 and another unspecified tid=0xc0. Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-05-09avformat/mxfenc: Write transfer characteristicMichael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mxfenc: Add Stored F2 Offset / Image Start/End Offset for D10Michael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mxfenc: Write Audio Ref Level for D10Michael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mxfenc: Add Padding BitsMichael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mxfenc: add white/black ref /color rangeMichael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mxfenc: Add vertical subsampling supportMichael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mxfenc: Fix stored widthMichael Niedermayer
This fixes the width to have computations matching the height Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mxfenc: Add object model versionMichael Niedermayer
Other tools (XFConvert at least) write this as well. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mxfenc: Add Product Version, Toolkit version and PlatformMichael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mxfenc: Bump minor versions for S377-1-2009Michael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-09avformat/mxfenc: Correct KAG alignment of prefaceMichael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-08avformat/segafilmenc - set keyframe bit correctlyGyan Doshi
As per https://web.archive.org/web/20020803104640/http://www.pcisys.net:80/~melanson/codecs/film-format.txt, the top bit of the info1 chunk is set as 1 for inter-coded frames and 0 otherwise.
2018-05-06lavf/bluray: translate a read of 0 to EOFJan Ekström
Yet another case of forgotten 0 =! EOF translation. The libbluray documentation specifically mentions that a read of 0 is EOF. Reported by Fyr on IRC.
2018-05-06lavf/format: Remove the dead code in av_probe_input_buffer2.Jun Zhao
Remove the dead code in av_probe_input_buffer2 Signed-off-by: Jun Zhao <mypopydev@gmail.com>
2018-05-06avformat/avio: make the logic simpleJun Zhao
remove the "ret" to make the code simple and generic. Signed-off-by: Jun Zhao <mypopydev@gmail.com>
2018-05-05swscale: add gray14 supportPaul B Mahol
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-05-04avformat: add vapoursynth wrapperwm4
This can "demux" .vpy files. Autodetection of .vpy scripts is intentionally not done, because it would be a major security issue. You need to force the format, for example with "-f vapoursynth" for the FFmpeg CLI tools. Some minor code copied from other LGPL parts of FFmpeg. I did not find a good way to test a few of the more obscure VS features, like VFR nodes, compat pixel formats, or nodes with dynamic size/format changes. These can be easily implemented on demand.
2018-05-04avformat/hls: don't propagate deprecated "user-agent" AVOptionwm4
This code will print a warning if any user agent is set - even if the API user used the proper non-deprecated "user_agent" option. This change should not even break anything, because even if the user sets the deprecated "user-agent" option, http.c copies it to the "user_agent" option anyway.
2018-05-04avformat/matroskaenc: do not write timebase as frameratewm4
If the API user doesn't set avg_frame_rate, matroskaenc will write the current timebase as "default duration" for the video track. This makes no sense, because the "default duration" implies the framerate of the video. Since the timebase is forced to 1/1000, this will make the resulting file claim 1000fps. Drop it and don't write the element. It's optional, so it's better not to write it if the framerate is unknown. Strangely does not require FATE changes.