diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 38bd580bfc..640744b88f 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -41,6 +41,19 @@ #include "libavformat/avformat.h" +typedef struct DemuxStreamGroup { + InputStreamGroup istg; + + // name used for logging + char log_name[32]; + + // Temporary fields for LCEVC merging + AVBitStreamFilterGraph *graph; + AVBitStreamFilterContext *lcevc[2]; + AVBitStreamFilterContext *sink; + int graph_enabled; +} DemuxStreamGroup; + typedef struct DemuxStream { InputStream ist; @@ -95,19 +108,15 @@ typedef struct DemuxStream { AVBSFContext *bsf; + DemuxStreamGroup **dsg; + int nb_dsg; + /* number of packets successfully read for this stream */ uint64_t nb_packets; // combined size of all the packets read uint64_t data_size; } DemuxStream; -typedef struct DemuxStreamGroup { - InputStreamGroup istg; - - // name used for logging - char log_name[32]; -} DemuxStreamGroup; - typedef struct Demuxer { InputFile f; @@ -164,6 +173,11 @@ typedef struct DemuxThreadContext { AVPacket *pkt_bsf; } DemuxThreadContext; +static DemuxStreamGroup *dsg_from_istg(InputStreamGroup *istg) +{ + return (DemuxStreamGroup*)istg; +} + static DemuxStream *ds_from_ist(InputStream *ist) { return (DemuxStream*)ist; @@ -598,14 +612,82 @@ static int do_send(Demuxer *d, DemuxStream *ds, AVPacket *pkt, unsigned flags, return 0; } +static int do_bsf_graph(Demuxer *d, DemuxThreadContext *dt, DemuxStreamGroup *dsg, + DemuxStream *ds, AVPacket *pkt) +{ + const AVStreamGroup *stg = dsg->istg.stg; + const AVStreamGroupLayeredVideo *lcevc = stg->params.layered_video; + const int enhancement = ds->ist.index == stg->streams[lcevc->el_index]->index; + AVBitStreamFilterContext *source = dsg->lcevc[enhancement]; + int ret, flags = AV_BSF_SOURCE_FLAG_PUSH; + + if (enhancement) + flags |= AV_BSF_SOURCE_FLAG_KEEP_REF; + + ret = av_bsf_source_add_packet(source, pkt, flags); + if (ret < 0) { + if (pkt) + av_packet_unref(pkt); + av_log(dsg, AV_LOG_ERROR, "Error submitting a packet for filtering: %s\n", + av_err2str(ret)); + return ret; + } + + if (pkt && enhancement) { + if (ds->discard) + av_packet_unref(pkt); + else { + ret = do_send(d, ds, pkt, 0, "filtered"); + if (ret < 0) { + av_packet_unref(pkt); + return ret; + } + } + return 0; + } + + while (1) { + ret = av_bsf_sink_get_packet(dsg->sink, dt->pkt_bsf, 0); + if (ret == AVERROR(EAGAIN)) + return 0; + else if (ret < 0) { + if (ret != AVERROR_EOF) + av_log(dsg, AV_LOG_ERROR, + "Error applying bitstream filters to a packet: %s\n", + av_err2str(ret)); + return ret; + } + + dt->pkt_bsf->time_base = av_bsf_sink_get_time_base(dsg->sink); + + ret = do_send(d, ds, dt->pkt_bsf, 0, "filtered"); + if (ret < 0) { + av_packet_unref(dt->pkt_bsf); + return ret; + } + } + + return 0; +} + static int demux_send(Demuxer *d, DemuxThreadContext *dt, DemuxStream *ds, AVPacket *pkt, unsigned flags) { InputFile *f = &d->f; + DemuxStreamGroup *dsg = NULL; int ret; + for (int i = 0; i < ds->nb_dsg; i++) { + const InputStreamGroup *istg = &ds->dsg[i]->istg; + + if (istg->stg->type != AV_STREAM_GROUP_PARAMS_LCEVC) + continue; + dsg = ds->dsg[i]; + break; + } + // pkt can be NULL only when flushing BSFs - av_assert0(ds->bsf || pkt); + av_assert0(ds->bsf || (dsg && dsg->graph) || pkt); // send heartbeat for sub2video streams if (d->pkt_heartbeat && pkt && pkt->pts != AV_NOPTS_VALUE) { @@ -625,6 +707,11 @@ static int demux_send(Demuxer *d, DemuxThreadContext *dt, DemuxStream *ds, } } + if (dsg && dsg->graph_enabled) { + ret = do_bsf_graph(d, dt, dsg, ds, pkt); + if (ret < 0) + return ret; + } if (ds->bsf) { if (pkt) av_packet_rescale_ts(pkt, pkt->time_base, ds->bsf->time_base_in); @@ -658,7 +745,9 @@ static int demux_send(Demuxer *d, DemuxThreadContext *dt, DemuxStream *ds, return ret; } } - } else { + } else if (ds->discard && pkt) { + av_packet_unref(pkt); + } else if (!dsg || !dsg->graph_enabled) { ret = do_send(d, ds, pkt, flags, "demuxed"); if (ret < 0) return ret; @@ -674,8 +763,18 @@ static int demux_bsf_flush(Demuxer *d, DemuxThreadContext *dt) for (unsigned i = 0; i < f->nb_streams; i++) { DemuxStream *ds = ds_from_ist(f->streams[i]); + DemuxStreamGroup *dsg = NULL; - if (!ds->bsf) + for (int j = 0; j < ds->nb_dsg; j++) { + const InputStreamGroup *istg = &ds->dsg[j]->istg; + + if (istg->stg->type != AV_STREAM_GROUP_PARAMS_LCEVC) + continue; + dsg = ds->dsg[j]; + break; + } + + if (!ds->bsf && (!dsg || !dsg->graph_enabled)) continue; ret = demux_send(d, dt, ds, NULL, 0); @@ -686,7 +785,8 @@ static int demux_bsf_flush(Demuxer *d, DemuxThreadContext *dt) return ret; } - av_bsf_flush(ds->bsf); + if (ds->bsf) + av_bsf_flush(ds->bsf); } return 0; @@ -809,7 +909,7 @@ static int input_thread(void *arg) dynamically in stream : we ignore them */ ds = dt.pkt_demux->stream_index < f->nb_streams ? ds_from_ist(f->streams[dt.pkt_demux->stream_index]) : NULL; - if (!ds || ds->discard || ds->finished) { + if (!ds || ds->finished) { report_new_stream(d, dt.pkt_demux); av_packet_unref(dt.pkt_demux); continue; @@ -915,10 +1015,15 @@ static void ist_free(InputStream **pist) static void istg_free(InputStreamGroup **pistg) { InputStreamGroup *istg = *pistg; + DemuxStreamGroup *dsg; if (!istg) return; + dsg = dsg_from_istg(istg); + + av_bsf_graph_free(&dsg->graph); + av_freep(pistg); } @@ -984,6 +1089,53 @@ int ist_use(InputStream *ist, int decoding_needed, ds->decoding_needed |= decoding_needed; ds->streamcopy_needed |= !decoding_needed; + for (int i = 0; i < ds->nb_dsg; i++) { + DemuxStreamGroup *dsg = ds->dsg[i]; + const InputStreamGroup *istg = &dsg->istg; + + if (!dsg->graph || istg->stg->type != AV_STREAM_GROUP_PARAMS_LCEVC) + continue; + const AVStreamGroupLayeredVideo *lcevc = istg->stg->params.layered_video; + if (ist->st->index == istg->stg->streams[lcevc->el_index]->index) + break; + + AVBitStreamFilterContext *lcevc_merge = av_bsf_graph_get_filter(dsg->graph, "lcevc_merge"); + + for (int j = 0; j < 2; j++) { + ret = av_bsf_init_dict(dsg->lcevc[j], NULL); + if (ret < 0) + return ret; + } + + ret = av_bsf_init_dict(lcevc_merge, NULL); + if (ret < 0) + return ret; + ret = av_bsf_init_dict(dsg->sink, NULL); + if (ret < 0) + return ret; + + ret = av_bsf_link(dsg->lcevc[0], 0, lcevc_merge, 0); + if (ret < 0) + return ret; + ret = av_bsf_link(dsg->lcevc[1], 0, lcevc_merge, 1); + if (ret < 0) + return ret; + ret = av_bsf_link(lcevc_merge, 0, dsg->sink, 0); + if (ret < 0) + return ret; + + ret = av_bsf_graph_config(dsg->graph, d); + if (ret < 0) + return ret; + + InputStream *lcevc_ist = d->f.streams[istg->stg->streams[lcevc->el_index]->index]; + lcevc_ist->st->discard = 0; + + dsg->graph_enabled = 1; + + break; + } + if (decoding_needed && ds->sch_idx_dec < 0) { int is_audio = ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO; int is_unreliable = !!(d->f.ctx->iformat->flags & AVFMT_NOTIMESTAMPS); @@ -1873,8 +2025,60 @@ fail: return ret; } +static int istg_parse_lcevc(const OptionsContext *o, Demuxer *d, DemuxStreamGroup *dsg) +{ + InputFile *f = &d->f; + const AVStreamGroup *stg = dsg->istg.stg; + const AVStreamGroupLayeredVideo *lcevc = stg->params.layered_video; + const AVBitStreamFilter *filter, *lcevc_filter = av_bsf_get_by_name("lcevc_merge"); + const InputStream *lcevc_ist = f->streams[stg->streams[lcevc->el_index]->index]; + const InputStream *base_ist = f->streams[stg->streams[!lcevc->el_index]->index]; + int ret; + + if (!lcevc_filter || stg->nb_streams != 2) + return 0; + + dsg->graph = av_bsf_graph_alloc(); + if(!dsg->graph) + return AVERROR(ENOMEM); + + filter = av_bsf_get_by_name("source"); + if (!filter) + return AVERROR_BUG; + + ret = av_bsf_graph_alloc_filter(&dsg->lcevc[0], filter, "lcevc_merge_base", dsg->graph); + if (ret < 0) + return ret; + av_opt_set_q(dsg->lcevc[0]->priv_data, "time_base", base_ist->st->time_base, 0); + ret = av_bsf_source_parameters_set(dsg->lcevc[0], base_ist->par); + if (ret < 0) + return ret; + + ret = av_bsf_graph_alloc_filter(&dsg->lcevc[1], filter, "lcevc_merge_enhancement", dsg->graph); + if (ret < 0) + return ret; + av_opt_set_q(dsg->lcevc[1]->priv_data, "time_base", lcevc_ist->st->time_base, 0); + ret = av_bsf_source_parameters_set(dsg->lcevc[1], lcevc_ist->par); + if (ret < 0) + return ret; + + ret = av_bsf_graph_alloc_filter(NULL, lcevc_filter, "lcevc_merge", dsg->graph); + if (ret < 0) + return ret; + + filter = av_bsf_get_by_name("sink"); + if (!filter) + return AVERROR_BUG; + ret = av_bsf_graph_alloc_filter(&dsg->sink, filter, "lcevc_merge_sink", dsg->graph); + if (ret < 0) + return ret; + + return 0; +} + static int istg_add(const OptionsContext *o, Demuxer *d, AVStreamGroup *stg) { + InputFile *f = &d->f; DemuxStreamGroup *dsg; InputStreamGroup *istg; int ret; @@ -1885,12 +2089,30 @@ static int istg_add(const OptionsContext *o, Demuxer *d, AVStreamGroup *stg) istg = &dsg->istg; + switch (stg->type) { + case AV_STREAM_GROUP_PARAMS_LCEVC: + for (int i = 0; i < istg->stg->nb_streams; i++) { + DemuxStream *ds = ds_from_ist(f->streams[istg->stg->streams[i]->index]); + ret = av_dynarray_add_nofree(&ds->dsg, &ds->nb_dsg, dsg); + if (ret < 0) + return ret; + } + break; + default: + break; + } + switch (stg->type) { case AV_STREAM_GROUP_PARAMS_TILE_GRID: ret = istg_parse_tile_grid(o, d, istg); if (ret < 0) return ret; break; + case AV_STREAM_GROUP_PARAMS_LCEVC: + ret = istg_parse_lcevc(o, d, dsg); + if (ret < 0) + return ret; + break; default: break; } diff --git a/tests/fate/mpegts.mak b/tests/fate/mpegts.mak index e2b978e085..65aab40d69 100644 --- a/tests/fate/mpegts.mak +++ b/tests/fate/mpegts.mak @@ -36,17 +36,17 @@ fate-mpegts-lcevc-vvc-single-track: CMD = stream_demux mpegts $(TARGET_SAMPLES)/ FATE_MPEGTS_FFMPEG_FFPROBE-$(call FRAMECRC, MOV, H264, H264_PARSER LCEVC_PARSER) += fate-mpegts-lcevc-h264-dual-track fate-mpegts-lcevc-h264-dual-track: CMD = stream_demux mpegts $(TARGET_SAMPLES)/lcevc/L_H264_640x360p_8bit8bit_2D_dd_dualTrack.ts \ - "" "-c:v copy -map 0" \ + "" "-c:v copy -map 0:1" \ "-show_entries stream_group=index,id,nb_streams,type:stream=index,id,codec_name" FATE_MPEGTS_FFMPEG_FFPROBE-$(call FRAMECRC, MOV, HEVC, HEVC_PARSER LCEVC_PARSER) += fate-mpegts-lcevc-hevc-dual-track fate-mpegts-lcevc-hevc-dual-track: CMD = stream_demux mpegts $(TARGET_SAMPLES)/lcevc/L_HEVC_640x360p_8bit8bit_2D_dd_dualTrack.ts \ - "" "-c:v copy -map 0" \ + "" "-c:v copy -map 0:1" \ "-show_entries stream_group=index,id,nb_streams,type:stream=index,id,codec_name" FATE_MPEGTS_FFMPEG_FFPROBE-$(call FRAMECRC, MOV, VVC, VVC_PARSER LCEVC_PARSER) += fate-mpegts-lcevc-vvc-dual-track fate-mpegts-lcevc-vvc-dual-track: CMD = stream_demux mpegts $(TARGET_SAMPLES)/lcevc/L_VVC_640x360p_8bit8bit_2D_dd_dualTrack.ts \ - "" "-c:v copy -map 0" \ + "" "-c:v copy -map 0:1" \ "-show_entries stream_group=index,id,nb_streams,type:stream=index,id,codec_name" FATE_SAMPLES_FFPROBE += $(FATE_MPEGTS_PROBE-yes) diff --git a/tests/ref/fate/mpegts-lcevc-h264-dual-track b/tests/ref/fate/mpegts-lcevc-h264-dual-track index 6779d96ee5..73c6c7374a 100644 --- a/tests/ref/fate/mpegts-lcevc-h264-dual-track +++ b/tests/ref/fate/mpegts-lcevc-h264-dual-track @@ -1,75 +1,39 @@ -#extradata 0: 39, 0xbce50b14 -#extradata 1: 28, 0x62a0074d +#extradata 0: 28, 0x62a0074d #tb 0: 1/90000 #media_type 0: video -#codec_id 0: h264 -#dimensions 0: 320x180 -#sar 0: 1/1 -#tb 1: 1/90000 -#media_type 1: video -#codec_id 1: lcevc -#dimensions 1: 640x360 -#sar 1: 0/1 -0, -6000, 0, 3000, 13439, 0x9e68d19b, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, -6000, 0, 3000, 1965, 0xb8dab7cb, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, -3000, 15000, 3000, 990, 0x87a3dd36, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, -3000, 15000, 3000, 187, 0xd07d53eb, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 0, 6000, 3000, 36, 0x9c8e0b20, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 0, 6000, 3000, 29, 0x909a0a04, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 3000, 3000, 3000, 21, 0x21e90549, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 3000, 3000, 3000, 22, 0x4fce0846, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 6000, 9000, 3000, 26, 0x462f07f9, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 6000, 9000, 3000, 152, 0x1f4345ba, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 9000, 12000, 3000, 51, 0xa052141d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 9000, 12000, 3000, 479, 0xf21fd21a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 12000, 30000, 3000, 1217, 0xad6057a9, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 12000, 30000, 3000, 497, 0xccfbcea5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 15000, 21000, 3000, 134, 0xc4c73900, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 15000, 21000, 3000, 265, 0x83bc7f47, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 18000, 18000, 3000, 45, 0x47ce10e6, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 18000, 18000, 3000, 285, 0x368f72bc, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 21000, 24000, 3000, 37, 0xdc250e18, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 21000, 24000, 3000, 226, 0x571257dd, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 24000, 27000, 3000, 65, 0x9bb81fce, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 24000, 27000, 3000, 243, 0xa96170fa, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 27000, 45000, 3000, 1263, 0x32f074ca, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 27000, 45000, 3000, 358, 0x45ffa1fb, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 30000, 36000, 3000, 70, 0xdfc71f4b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 30000, 36000, 3000, 167, 0x1af243de, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 33000, 33000, 3000, 56, 0x2e11158d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 33000, 33000, 3000, 210, 0x10ce596d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 36000, 39000, 3000, 64, 0x5bc12056, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 36000, 39000, 3000, 193, 0x997b4e2d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 39000, 42000, 3000, 44, 0x2cdf1172, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 39000, 42000, 3000, 167, 0xe1404217, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 42000, 60000, 3000, 1738, 0x526859bd, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 42000, 60000, 3000, 302, 0x7462828a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 45000, 51000, 3000, 110, 0x2e5030f1, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 45000, 51000, 3000, 978, 0xf712deca, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 48000, 48000, 3000, 57, 0x3b4e181f, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 48000, 48000, 3000, 170, 0xeb414130, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 51000, 54000, 3000, 40, 0xb2410a90, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 51000, 54000, 3000, 79, 0x9d8616dc, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 54000, 57000, 3000, 48, 0xb22715eb, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 54000, 57000, 3000, 185, 0xb7954514, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 57000, 75000, 3000, 2098, 0x897a07e8, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 57000, 75000, 3000, 230, 0x974b6ff8, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 60000, 66000, 3000, 129, 0x81283362, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 60000, 66000, 3000, 264, 0xa27483da, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 63000, 63000, 3000, 57, 0x69a119c6, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 63000, 63000, 3000, 175, 0xa678448a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 66000, 69000, 3000, 52, 0xa81a1463, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 66000, 69000, 3000, 160, 0x7d423c5c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 69000, 72000, 3000, 40, 0x05501073, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 69000, 72000, 3000, 302, 0x12788d97, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 72000, 87000, 3000, 609, 0xee9127a6, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 72000, 87000, 3000, 122, 0xe5bf2b1f, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 75000, 81000, 3000, 101, 0xf43d2b96, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 75000, 81000, 3000, 175, 0x17244a4e, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 78000, 78000, 3000, 44, 0x18410f62, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 78000, 78000, 3000, 131, 0x1c0d2a8a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 81000, 84000, 3000, 83, 0x803a2817, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 81000, 84000, 3000, 391, 0xe4e0b1f6, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +#codec_id 0: lcevc +#dimensions 0: 640x360 +#sar 0: 0/1 +0, -6000, 0, 3000, 1965, 0xb8dab7cb, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, -3000, 15000, 3000, 187, 0xd07d53eb, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 0, 6000, 3000, 29, 0x909a0a04, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 3000, 3000, 3000, 22, 0x4fce0846, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 6000, 9000, 3000, 152, 0x1f4345ba, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 9000, 12000, 3000, 479, 0xf21fd21a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 12000, 30000, 3000, 497, 0xccfbcea5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 15000, 21000, 3000, 265, 0x83bc7f47, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 18000, 18000, 3000, 285, 0x368f72bc, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 21000, 24000, 3000, 226, 0x571257dd, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 24000, 27000, 3000, 243, 0xa96170fa, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 27000, 45000, 3000, 358, 0x45ffa1fb, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 30000, 36000, 3000, 167, 0x1af243de, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 33000, 33000, 3000, 210, 0x10ce596d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 36000, 39000, 3000, 193, 0x997b4e2d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 39000, 42000, 3000, 167, 0xe1404217, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 42000, 60000, 3000, 302, 0x7462828a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 45000, 51000, 3000, 978, 0xf712deca, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 48000, 48000, 3000, 170, 0xeb414130, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 51000, 54000, 3000, 79, 0x9d8616dc, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 54000, 57000, 3000, 185, 0xb7954514, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 57000, 75000, 3000, 230, 0x974b6ff8, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 60000, 66000, 3000, 264, 0xa27483da, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 63000, 63000, 3000, 175, 0xa678448a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 66000, 69000, 3000, 160, 0x7d423c5c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 69000, 72000, 3000, 302, 0x12788d97, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 72000, 87000, 3000, 122, 0xe5bf2b1f, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 75000, 81000, 3000, 175, 0x17244a4e, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 78000, 78000, 3000, 131, 0x1c0d2a8a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 81000, 84000, 3000, 391, 0xe4e0b1f6, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 [PROGRAM] [STREAM] index=0 diff --git a/tests/ref/fate/mpegts-lcevc-hevc-dual-track b/tests/ref/fate/mpegts-lcevc-hevc-dual-track index 906e44a607..02c673c6b4 100644 --- a/tests/ref/fate/mpegts-lcevc-hevc-dual-track +++ b/tests/ref/fate/mpegts-lcevc-hevc-dual-track @@ -1,75 +1,39 @@ -#extradata 0: 85, 0x17ac0df1 -#extradata 1: 28, 0x62a0074d +#extradata 0: 28, 0x62a0074d #tb 0: 1/90000 #media_type 0: video -#codec_id 0: hevc -#dimensions 0: 320x180 +#codec_id 0: lcevc +#dimensions 0: 640x360 #sar 0: 0/1 -#tb 1: 1/90000 -#media_type 1: video -#codec_id 1: lcevc -#dimensions 1: 640x360 -#sar 1: 0/1 -0, -6000, 0, 3000, 15399, 0x8dd63be5, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, -6000, 0, 3000, 12989, 0xd4a4c6cb, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, -3000, 12000, 3000, 993, 0x231af19f, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, -3000, 12000, 3000, 186, 0x785c535a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 0, 6000, 3000, 101, 0x85832a32, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 0, 6000, 3000, 49, 0x70680ea8, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 3000, 3000, 3000, 66, 0xea761a13, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 3000, 3000, 3000, 78, 0xc9961670, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 6000, 9000, 3000, 63, 0xaf6617ba, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 6000, 9000, 3000, 372, 0x98bfb4e8, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 9000, 24000, 3000, 1890, 0x8eb0acfb, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 9000, 24000, 3000, 324, 0x754c831b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 12000, 18000, 3000, 107, 0xbd3f284d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 12000, 18000, 3000, 467, 0x97b6e75e, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 15000, 15000, 3000, 78, 0xf89c2343, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 15000, 15000, 3000, 330, 0x5fd3a240, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 18000, 21000, 3000, 73, 0xa6771d6b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 18000, 21000, 3000, 379, 0x5b8dadc0, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 21000, 27000, 3000, 1265, 0xce6a65de, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 21000, 27000, 3000, 590, 0x0c012d57, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 24000, 42000, 3000, 1843, 0xe3c5851c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 24000, 42000, 3000, 308, 0xe7ec8c9a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 27000, 36000, 3000, 93, 0x6cec297d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 27000, 36000, 3000, 263, 0x4aa76ee4, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 30000, 30000, 3000, 99, 0x35df2a03, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 30000, 30000, 3000, 360, 0x0534b318, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 33000, 33000, 3000, 85, 0xe1c9260d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 33000, 33000, 3000, 376, 0x9135a953, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 36000, 39000, 3000, 76, 0x1d361fb3, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 36000, 39000, 3000, 292, 0x3c64760f, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 39000, 45000, 3000, 1078, 0xd29026a4, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 39000, 45000, 3000, 207, 0xed435817, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 42000, 60000, 3000, 1991, 0x7557e3f2, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 42000, 60000, 3000, 219, 0x20325656, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 45000, 54000, 3000, 121, 0x5cee350e, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 45000, 54000, 3000, 173, 0x9b0052da, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 48000, 48000, 3000, 97, 0x9ce927ed, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 48000, 48000, 3000, 312, 0xea838992, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 51000, 51000, 3000, 91, 0x0c5525c2, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 51000, 51000, 3000, 267, 0x1c456ce5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 54000, 57000, 3000, 64, 0xaff51996, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 54000, 57000, 3000, 252, 0x82426c2c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 57000, 72000, 3000, 1483, 0xd2c2cbf4, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 57000, 72000, 3000, 141, 0x03383b3e, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 60000, 66000, 3000, 98, 0x635028aa, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 60000, 66000, 3000, 168, 0xc99c43d0, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 63000, 63000, 3000, 69, 0x69541de5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 63000, 63000, 3000, 150, 0x6f153b07, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 66000, 69000, 3000, 71, 0x831a1e4a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 66000, 69000, 3000, 168, 0xe73b427c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 69000, 87000, 3000, 179, 0xdc325270, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 69000, 87000, 3000, 113, 0x6a621efe, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 72000, 81000, 3000, 320, 0x0c4391c6, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 72000, 81000, 3000, 87, 0xf86a15ee, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 75000, 75000, 3000, 423, 0x8e4acade, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 75000, 75000, 3000, 139, 0xb0f93bbf, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 78000, 78000, 3000, 1048, 0x0a09ff27, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 78000, 78000, 3000, 103, 0x303b27b7, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 81000, 84000, 3000, 611, 0xf5f72936, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 81000, 84000, 3000, 136, 0x1f1a3853, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, -6000, 0, 3000, 12989, 0xd4a4c6cb, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, -3000, 12000, 3000, 186, 0x785c535a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 0, 6000, 3000, 49, 0x70680ea8, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 3000, 3000, 3000, 78, 0xc9961670, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 6000, 9000, 3000, 372, 0x98bfb4e8, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 9000, 24000, 3000, 324, 0x754c831b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 12000, 18000, 3000, 467, 0x97b6e75e, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 15000, 15000, 3000, 330, 0x5fd3a240, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 18000, 21000, 3000, 379, 0x5b8dadc0, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 21000, 27000, 3000, 590, 0x0c012d57, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 24000, 42000, 3000, 308, 0xe7ec8c9a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 27000, 36000, 3000, 263, 0x4aa76ee4, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 30000, 30000, 3000, 360, 0x0534b318, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 33000, 33000, 3000, 376, 0x9135a953, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 36000, 39000, 3000, 292, 0x3c64760f, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 39000, 45000, 3000, 207, 0xed435817, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 42000, 60000, 3000, 219, 0x20325656, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 45000, 54000, 3000, 173, 0x9b0052da, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 48000, 48000, 3000, 312, 0xea838992, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 51000, 51000, 3000, 267, 0x1c456ce5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 54000, 57000, 3000, 252, 0x82426c2c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 57000, 72000, 3000, 141, 0x03383b3e, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 60000, 66000, 3000, 168, 0xc99c43d0, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 63000, 63000, 3000, 150, 0x6f153b07, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 66000, 69000, 3000, 168, 0xe73b427c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 69000, 87000, 3000, 113, 0x6a621efe, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 72000, 81000, 3000, 87, 0xf86a15ee, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 75000, 75000, 3000, 139, 0xb0f93bbf, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 78000, 78000, 3000, 103, 0x303b27b7, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 81000, 84000, 3000, 136, 0x1f1a3853, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 [PROGRAM] [STREAM] index=0 diff --git a/tests/ref/fate/mpegts-lcevc-vvc-dual-track b/tests/ref/fate/mpegts-lcevc-vvc-dual-track index e76306b7d6..67b9353515 100644 --- a/tests/ref/fate/mpegts-lcevc-vvc-dual-track +++ b/tests/ref/fate/mpegts-lcevc-vvc-dual-track @@ -1,75 +1,39 @@ -#extradata 0: 60, 0x43210bfe -#extradata 1: 28, 0x62a0074d +#extradata 0: 28, 0x62a0074d #tb 0: 1/90000 #media_type 0: video -#codec_id 0: vvc -#dimensions 0: 320x180 +#codec_id 0: lcevc +#dimensions 0: 640x360 #sar 0: 0/1 -#tb 1: 1/90000 -#media_type 1: video -#codec_id 1: lcevc -#dimensions 1: 640x360 -#sar 1: 0/1 -0, -9000, 0, 3000, 15194, 0x43c98187, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, -9000, 0, 3000, 15162, 0x3c04da92, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, -6000, 24000, 3000, 932, 0xf8d6cab5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, -6000, 24000, 3000, 444, 0x99acb8c2, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, -3000, 12000, 3000, 54, 0xca2d15c5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, -3000, 12000, 3000, 880, 0x7084b2e9, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 0, 6000, 3000, 36, 0x88690ab9, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 0, 6000, 3000, 130, 0xaea03202, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 3000, 3000, 3000, 29, 0x4217067b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 3000, 3000, 3000, 49, 0x96b90ebe, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 6000, 9000, 3000, 29, 0x45be06c0, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 6000, 9000, 3000, 169, 0x0f964069, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 9000, 18000, 3000, 49, 0x6f4513cb, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 9000, 18000, 3000, 525, 0xa5ca0a9a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 12000, 15000, 3000, 29, 0x534e098a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 12000, 15000, 3000, 336, 0xd8868c8d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 15000, 21000, 3000, 29, 0x4ae908b8, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 15000, 21000, 3000, 399, 0xcd45b6e7, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 18000, 48000, 3000, 2619, 0x6ede2970, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 18000, 48000, 3000, 395, 0xd306bc8d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 21000, 36000, 3000, 55, 0xf05d175d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 21000, 36000, 3000, 407, 0xfaf2b293, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 24000, 30000, 3000, 50, 0x92bc1361, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 24000, 30000, 3000, 463, 0x6b67e5ee, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 27000, 27000, 3000, 29, 0x4c0d08d7, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 27000, 27000, 3000, 397, 0x2530adc5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 30000, 33000, 3000, 29, 0x4dd408ec, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 30000, 33000, 3000, 392, 0x9df6c9b1, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 33000, 42000, 3000, 46, 0x459c11f6, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 33000, 42000, 3000, 377, 0x3259c303, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 36000, 39000, 3000, 29, 0x552e09aa, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 36000, 39000, 3000, 304, 0x0dd58540, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 39000, 45000, 3000, 29, 0x4cc908d8, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 39000, 45000, 3000, 191, 0x47c74b4c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 42000, 72000, 3000, 2895, 0x0b5594d7, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 42000, 72000, 3000, 175, 0xb152476b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 45000, 60000, 3000, 66, 0x1c2b1e2d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 45000, 60000, 3000, 242, 0x446566a5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 48000, 54000, 3000, 47, 0x5b2e12e5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 48000, 54000, 3000, 267, 0xf9bc71af, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 51000, 51000, 3000, 31, 0x5ece0934, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 51000, 51000, 3000, 289, 0xfe8a780f, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 54000, 57000, 3000, 29, 0x4fb4090c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 54000, 57000, 3000, 242, 0x015a74df, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 57000, 66000, 3000, 58, 0x0e8b14d9, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 57000, 66000, 3000, 206, 0x7e7d624c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 60000, 63000, 3000, 30, 0x5b9a090f, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 60000, 63000, 3000, 187, 0x4c1152d9, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 63000, 69000, 3000, 31, 0x5fe60928, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 63000, 69000, 3000, 269, 0x7efe76d6, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 66000, 87000, 3000, 3109, 0x1d561966, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 66000, 87000, 3000, 179, 0x573b422b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 69000, 78000, 3000, 46, 0x4f9e125a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 69000, 78000, 3000, 186, 0x6d12589a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 72000, 75000, 3000, 29, 0x585e09e2, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 72000, 75000, 3000, 169, 0xa24f49ea, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 75000, 81000, 3000, 29, 0x52e7095b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 75000, 81000, 3000, 64, 0xa66c143b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -0, 78000, 84000, 3000, 48, 0x77bc1384, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 -1, 78000, 84000, 3000, 184, 0xc61e46d9, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, -9000, 0, 3000, 15162, 0x3c04da92, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, -6000, 24000, 3000, 444, 0x99acb8c2, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, -3000, 12000, 3000, 880, 0x7084b2e9, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 0, 6000, 3000, 130, 0xaea03202, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 3000, 3000, 3000, 49, 0x96b90ebe, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 6000, 9000, 3000, 169, 0x0f964069, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 9000, 18000, 3000, 525, 0xa5ca0a9a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 12000, 15000, 3000, 336, 0xd8868c8d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 15000, 21000, 3000, 399, 0xcd45b6e7, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 18000, 48000, 3000, 395, 0xd306bc8d, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 21000, 36000, 3000, 407, 0xfaf2b293, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 24000, 30000, 3000, 463, 0x6b67e5ee, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 27000, 27000, 3000, 397, 0x2530adc5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 30000, 33000, 3000, 392, 0x9df6c9b1, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 33000, 42000, 3000, 377, 0x3259c303, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 36000, 39000, 3000, 304, 0x0dd58540, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 39000, 45000, 3000, 191, 0x47c74b4c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 42000, 72000, 3000, 175, 0xb152476b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 45000, 60000, 3000, 242, 0x446566a5, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 48000, 54000, 3000, 267, 0xf9bc71af, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 51000, 51000, 3000, 289, 0xfe8a780f, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 54000, 57000, 3000, 242, 0x015a74df, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 57000, 66000, 3000, 206, 0x7e7d624c, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 60000, 63000, 3000, 187, 0x4c1152d9, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 63000, 69000, 3000, 269, 0x7efe76d6, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 66000, 87000, 3000, 179, 0x573b422b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 69000, 78000, 3000, 186, 0x6d12589a, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 72000, 75000, 3000, 169, 0xa24f49ea, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 75000, 81000, 3000, 64, 0xa66c143b, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 +0, 78000, 84000, 3000, 184, 0xc61e46d9, F=0x0, S=1, MPEGTS Stream ID, 1, 0x00e000e0 [PROGRAM] [STREAM] index=0