1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-02 03:06:28 +02:00
FFmpeg/tests/fate
Aman Gupta 16b4f97b72 avformat/mpegts: add merge_pmt_versions option
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-18 19:00:29 -07:00
..
aac.mak fate: remove the fate-aac-ltp-encode test 2018-01-13 12:03:49 +00:00
ac3.mak fate: add test for eac3 dependant stream 2018-03-30 14:05:10 -03:00
acodec.mak avcodec/dcaenc: Use ffmpeg mdct instead of own implementation 2018-01-13 18:13:58 +00:00
adpcm.mak
alac.mak
als.mak
amrnb.mak
amrwb.mak
api.mak Merge commit '698ac8f9cabd053f2c19346a77b92f8eae4218fc' 2017-10-03 22:59:08 -03:00
apng.mak
atrac.mak
audio.mak avcodec/imc: cast float to int prior to comparing with int variable 2017-07-01 21:42:12 +02:00
avformat.mak fate: remove missing references to ffm 2018-01-06 16:14:55 -03:00
bmp.mak
build.mak Merge commit 'db869f4ea4405fb8f9736e5ecdca70f77621a28e' 2017-10-11 19:02:04 -03:00
canopus.mak
cbs.mak fate/cbs: Add an SEI test 2018-05-10 23:54:02 +01:00
cdxl.mak
checkasm.mak checkasm/swscale : add test for rgb shuffle_bytes func 2018-03-24 20:22:12 +01:00
concatdec.mak
cover-art.mak
dca.mak fate: add a dca_core bitstream filter test 2018-03-17 12:34:46 -03:00
demux.mak libavformat/aac: Parse all ID3 tags present between ADTS frames 2018-04-12 02:54:14 +02:00
dfa.mak
dnxhd.mak
dpcm.mak
ea.mak
exif.mak
ffmpeg.mak fate: change fate-ffmpeg-attached_pics to encode to pcm_s16le 2017-10-28 21:35:57 +02:00
ffprobe.mak
fft.mak Merge commit '698ac8f9cabd053f2c19346a77b92f8eae4218fc' 2017-10-03 22:59:08 -03:00
fifo-muxer.mak tests/fate/fifo-muxer: update fifo-muxer dependencies 2017-05-08 08:42:00 +02:00
filter-audio.mak fate: add tests for pan audio filter 2018-02-19 08:32:44 +01:00
filter-video.mak avfilter/vsrc_testsrc: add pal75bars and pal100bars video filter sources 2018-05-18 15:39:54 +02:00
fits.mak fate: Fix fitsdec-gbrap16 test on big-endian hardware. 2017-11-04 00:47:37 +01:00
flac.mak
flvenc.mak fate/flvenc: set bitexact output format flag explicitly 2017-08-30 23:28:21 -03:00
gapless.mak lavc: prefer the mp3float decoder to the mp3 decoder 2018-04-01 13:02:12 +01:00
gif.mak
h264.mak Merge commit 'ec0f4fa17ce29cf01d4def21041b0b87f7e3105d' 2017-11-11 18:37:54 -03:00
hap.mak fate/hapenc : remove tests due to inconsistent result 2018-05-08 11:44:34 +02:00
hevc.mak fate: add PERSIST_RPARAM_A_RExt_Sony_3 hevc conformance test 2018-01-05 16:47:02 -03:00
id3v2.mak fate: add id3v2 test 2018-02-02 12:16:56 -03:00
image.mak fate/exr : add test for long name flag 2018-02-24 21:42:46 +01:00
indeo.mak
libavcodec.mak fate/libavcodec: add codec_desc test 2018-02-12 06:06:37 +07:00
libavdevice.mak
libavformat.mak
libavresample.mak
libavutil.mak avutil/integer: move the test to the corresponding subdirectory 2018-03-20 23:27:58 -03:00
libswresample.mak Merge commit '4141a5a240fba44b4b4a1c488c279d7dd8a11ec7' 2017-10-03 21:28:07 -03:00
libswscale.mak
lossless-audio.mak
lossless-video.mak
matroska.mak fate: use do_md5sum instead of the md5 protocol for most md5 fate tests 2017-06-18 23:19:48 +02:00
microsoft.mak Merge commit 'e1a6d63c7eeff2f0ec8173546357bfaa9deecea4' 2017-10-03 23:36:25 -03:00
monkeysaudio.mak
mov.mak avformat/mov: Increase support for common encryption. 2018-04-19 03:15:32 +02:00
mp3.mak Merge commit '4141a5a240fba44b4b4a1c488c279d7dd8a11ec7' 2017-10-03 21:28:07 -03:00
mpc.mak
mpeg4.mak
mpegps.mak fate/mpegps: add tests for PCM_DVD stream remux 2018-02-16 21:53:22 +01:00
mpegts.mak avformat/mpegts: add merge_pmt_versions option 2018-05-18 19:00:29 -07:00
mxf.mak fate/mxf: add reel name test 2017-12-08 20:02:16 +01:00
opus.mak opus: fix hybrid folding indexing during band quantization 2017-12-08 04:42:24 +00:00
pcm.mak Merge commit '043b0b9fb1481053b712d06d2c5b772f1845b72b' 2017-03-24 11:40:35 +01:00
pixlet.mak fate/pixlet : add test for rgb 2017-08-31 02:53:11 +02:00
probe.mak
prores.mak Merge commit '4141a5a240fba44b4b4a1c488c279d7dd8a11ec7' 2017-10-03 21:28:07 -03:00
qt.mak fate: disable fate-svq3-2 2017-10-02 21:42:34 -03:00
qtrle.mak
real.mak Merge commit '043b0b9fb1481053b712d06d2c5b772f1845b72b' 2017-03-24 11:40:35 +01:00
screen.mak Merge commit '4d4d7cf9d539a053f531f662a972b23d335738eb' 2017-10-27 21:16:18 -03:00
seek.mak lavf/mov.c: Use the correct offset to shift timestamp when seeking. 2018-03-10 17:55:50 +01:00
source-check.sh tests/fate/source-check: Use git grep in place of grep 2017-03-30 03:12:05 +02:00
source.mak
speedhq.mak speedhq: add FATE tests 2017-08-03 16:36:02 -03:00
subtitles.mak avcodec/mpeg12dec: parse A53 caption data embedded in SCTE-20 user data 2017-11-15 18:14:39 -08:00
utvideo.mak avcodec/utvideoenc: switch to planar RGB formats 2018-01-02 13:41:50 +01:00
vcodec.mak Merge commit '5be9939b46a6a4d3860a1b1a872aa50897095970' 2017-11-07 18:35:34 -03:00
video.mak fate/hap : move decoding test to a separate file 2018-03-13 20:27:22 +01:00
voice.mak
vorbis.mak
vpx.mak Merge commit '4141a5a240fba44b4b4a1c488c279d7dd8a11ec7' 2017-10-03 21:28:07 -03:00
vqf.mak Merge commit '4141a5a240fba44b4b4a1c488c279d7dd8a11ec7' 2017-10-03 21:28:07 -03:00
wavpack.mak fate: use do_md5sum instead of the md5 protocol for most md5 fate tests 2017-06-18 23:19:48 +02:00
wma.mak
xvid.mak