summaryrefslogtreecommitdiffstats
path: root/libavformat
Commit message (Collapse)AuthorAgeFilesLines
...
* lavf/libssh: translate a read of 0 to EOFJan Ekström2018-05-281-1/+1
| | | | | | | | | | | | Yet another case of forgotten 0 =! EOF translation. While the documentation for this specific synchronous read function does not mention it, the documentation for `sftp_async_read` documents it, as well as looking at the implementation of this function leads one to find `if (handle->eof) { return 0; }`. Reported by stnutt on IRC.
* avformat/dashenc: Added a warning for incorrect segment name extensionKarthick Jeyapal2018-05-281-0/+21
| | | | | | Applicable only to webm output format. By default all the segment filenames end with .m4s extension. When someone chooses webm output format, we recommend they also override the relevant segment name options to end with .webm extension. This patch will issue a warning for he same
* avformat/dashenc: Added option for Segment file formatKarthick Jeyapal2018-05-281-28/+39
| | | | | | | | Right now segment file format is chosen to be either mp4 or webm based on the codec format. This patch makes that choice configurable by the user, instead of being decided by the muxer. Also with this change per-stream choice segment file format(based on codec type) is not possible. All the output audio and video streams should be in the same file format.
* libavformat/mxfenc: Add some () to attempt to workaround build issue on osxMichael Niedermayer2018-05-271-6/+6
| | | | | | | fixes ticket7209 Tested-by: Jim DeLaHunt <from.ffmpeg-dev@jdlh.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mxf: fix NTSC 59.94 samples per frame layoutMarton Balint2018-05-271-1/+1
| | | | | | | | | FFmbc uses this. bmx uses this. XAVC MXF Mapping and Operating Points prefers this. Basic rounding rules also yields these numbers. Signed-off-by: Marton Balint <cus@passwd.hu>
* lavf/img2dec: Auto-detect xwd images.Carl Eugen Hoyos2018-05-254-1/+35
|
* avformat/hlsenc: support http method for hls fmp4Steven Liu2018-05-241-1/+3
| | | | | | fix ticket: 7160 Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* avformat/dashdec: replace user-agent to user_agent for deprecate warning messageSteven Liu2018-05-241-3/+3
|
* avformat/dashdec: Fix for ticket 7149 (Segfault when decoding dash streams)Colin NG2018-05-241-36/+10
| | | | simplify the code to check common init section
* avformat/dashdec: Fix for ticket 7149 (Segfault when decoding dash streams)Colin NG2018-05-241-7/+23
| | | | Add NULL pointer check for init_section
* avformat/mov: replace a value error by clipping into valid range in ↵Michael Niedermayer2018-05-221-3/+11
| | | | | | | | mov_read_stsc() Fixes: #7165 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/bintext: Reduce detection for random .bin files as it more likely ↵Michael Niedermayer2018-05-221-1/+1
| | | | | | is not a multimedia related file Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* libavformat: add mbedTLS based TLSThomas Volkert2018-05-215-1/+413
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/mpegts: fix memory leak with merge_pmt_versions=1Aman Gupta2018-05-211-2/+5
| | | | Signed-off-by: Aman Gupta <aman@tmm1.net>
* avformat/mpegts: rename variable to clarify meaningAman Gupta2018-05-211-8/+8
| | | | | | | | 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>
* avformat/mov: Only fail for STCO/STSC contradictions if both existMichael Niedermayer2018-05-211-1/+1
| | | | | | | | 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>
* avformat/mov: Break out early if chunk_count is 0 in mov_build_index()Michael Niedermayer2018-05-211-0/+3
| | | | | | | | | 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>
* avformat/mp3dec: require 90% of a file to be mp3 if only 1 mp3 frame is ↵Michael Niedermayer2018-05-201-1/+1
| | | | | | | | found in sequence This eliminates several low score detections of non mp3 files Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mp3dec: Require 50% of the file to be mp3 frames in the ↵Michael Niedermayer2018-05-201-1/+1
| | | | | | | | maxframes>200 probing test This corrects several misdetections of large files Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mp3dec: Require probing data to be 50% mp3 frames for low score ↵Michael Niedermayer2018-05-201-3/+7
| | | | | | | | | 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>
* avformat/mpegts: add merge_pmt_versions optionAman Gupta2018-05-181-3/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* avformat/mpegts: keep track of PMT details in AVProgram/AVStreamAman Gupta2018-05-181-5/+25
| | | | | | | | | | | | | | | | | | | 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>
* avformat: add fields to AVProgram/AVStream for PMT change trackingAman Gupta2018-05-183-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* avformat/mpegts: add skip_unknown_pmt optionAman Gupta2018-05-181-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* avformat/mpegts: tag video streams with still imagesAman Gupta2018-05-174-2/+10
| | | | | | | | | | | | 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>
* avformat: add skip_estimate_duration_from_ptsAman Gupta2018-05-173-0/+14
| | | | | | | | | | | | | | | | | | | 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>
* avformat/hls: fix seeking around EVENT playlist after media sequence changesAman Gupta2018-05-161-8/+38
| | | | | | | 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>
* avformat/webm_chunk: always use a static buffer for get_chunk_filenameMarton Balint2018-05-151-1/+7
| | | | | | | | | | 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>
* avformat/mpegts: fix incorrect indentationAman Gupta2018-05-151-3/+3
| | | | Signed-off-by: Aman Gupta <aman@tmm1.net>
* avformat/dashenc: configuring container format optionsVishwanath Dixit2018-05-151-0/+7
|
* avformat/mpegts: initialize section_buf to fix valgrind test failureAman Gupta2018-05-141-1/+1
| | | | | | http://fate.ffmpeg.org/report.cgi?slot=x86_64-archlinux-gcc-valgrind&time=20180513001958 Signed-off-by: Aman Gupta <aman@tmm1.net>
* avformat/mpegts: reindent after last changeAman Gupta2018-05-121-35/+35
| | | | Signed-off-by: Aman Gupta <aman@tmm1.net>
* avformat/mpegts: parse sections with multiple tablesAman Gupta2018-05-121-7/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* avformat/hlsenc: set AVFMT_NODIMENSIONSAman Gupta2018-05-121-1/+1
| | | | | | Same as previous commit but for mpegts inside HLS. Signed-off-by: Aman Gupta <aman@tmm1.net>
* avformat/mpegtsenc: set AVFMT_NODIMENSIONSAman Gupta2018-05-121-1/+1
| | | | | | | | | 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>
* avformat/mxfenc: Set color siting to 0 for D10-MXFMichael Niedermayer2018-05-121-0/+1
| | | | | | | | | 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>
* avformat/mxfenc: Add Sample width/height/x offset/y offset, Display x offset ↵Michael Niedermayer2018-05-121-2/+37
| | | | | | and F2 offset Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* lavf/network: fix doxygen comments.Jun Zhao2018-05-101-4/+4
| | | | Signed-off-by: Jun Zhao <mypopydev@gmail.com>
* avformat/mxfenc: add h264 profilesThomas Mundt2018-05-101-22/+36
| | | | | | 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>
* avformat/mpegts: clean up whitespaceAman Gupta2018-05-091-2/+2
| | | | Signed-off-by: Aman Gupta <aman@tmm1.net>
* avformat/mpegts: use MAX_SECTION_SIZE instead of hardcoded valueAman Gupta2018-05-091-2/+2
| | | | Signed-off-by: Aman Gupta <aman@tmm1.net>
* avformat/mpegts: skip non-PMT tids earlierAman Gupta2018-05-091-2/+2
| | | | | | | | | | | | | | | 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>
* avformat/mxfenc: Write transfer characteristicMichael Niedermayer2018-05-081-0/+39
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mxfenc: Add Stored F2 Offset / Image Start/End Offset for D10Michael Niedermayer2018-05-081-0/+18
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mxfenc: Write Audio Ref Level for D10Michael Niedermayer2018-05-081-0/+8
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mxfenc: Add Padding BitsMichael Niedermayer2018-05-081-1/+6
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mxfenc: add white/black ref /color rangeMichael Niedermayer2018-05-081-0/+22
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mxfenc: Add vertical subsampling supportMichael Niedermayer2018-05-081-0/+11
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mxfenc: Fix stored widthMichael Niedermayer2018-05-081-1/+2
| | | | | | This fixes the width to have computations matching the height Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mxfenc: Add object model versionMichael Niedermayer2018-05-081-1/+6
| | | | | | Other tools (XFConvert at least) write this as well. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
OpenPOWER on IntegriCloud