[FFmpeg-devel] [PATCH v2 6/6] avformat: remove some mpegts details from AVStream

James Almer jamrial at gmail.com
Tue Dec 29 22:35:51 EET 2020


On 12/29/2020 4:19 PM, Marton Balint wrote:
> These fields were added to support -merge_pmt_versions, but the mpegts demuxer
> is also keeping track its programs internally, so that should be a better place
> to handle it.
> 
> Also it is not a very good idea to keep fields like program_num or
> pmt_stream_idx in an AVStream, because a single stream can be part of multiple
> programs, multiple PMTs, so the stream attributes can refer to any program the
> stream is part of.
> 
> Since they are not part of public API, lets simply remove them, or rather
> replace them with placeholders for ABI compatibility with libavdevice.
> 
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
>   libavformat/avformat.h | 12 ++++++------
>   libavformat/mpegts.c   |  9 ---------
>   2 files changed, 6 insertions(+), 15 deletions(-)
> 
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index 4865c56cc3..523cf34d55 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -1096,12 +1096,12 @@ typedef struct AVStream {
>        */
>       int stream_identifier;
>   
> -    /**
> -     * Details of the MPEG-TS program which created this stream.
> -     */
> -    int program_num;
> -    int pmt_version;
> -    int pmt_stream_idx;
> +#if LIBAVFORMAT_VERSION_MAJOR < 59
> +    // kept for ABI compatibility only, do not access in any way
> +    int unused8;
> +    int unused9;
> +    int unused10;
> +#endif
>   
>       /**
>        * An opaque field for libavformat internal usage.
> diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
> index 9a3fd56ece..b9a3152e81 100644
> --- a/libavformat/mpegts.c
> +++ b/libavformat/mpegts.c
> @@ -2406,9 +2406,6 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
>                   if (!pes->st)
>                       goto out;
>                   pes->st->id = pes->pid;
> -                pes->st->program_num = h->id;
> -                pes->st->pmt_version = h->version;
> -                pes->st->pmt_stream_idx = i;
>               }
>               st = pes->st;
>           } else if (is_pes_stream(stream_type, prog_reg_desc)) {
> @@ -2428,9 +2425,6 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
>                   if (!st)
>                       goto out;
>                   st->id = pes->pid;
> -                st->program_num = h->id;
> -                st->pmt_version = h->version;
> -                st->pmt_stream_idx = i;
>               }
>           } else {
>               int idx = ff_find_stream_index(ts->stream, pid);
> @@ -2445,9 +2439,6 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
>                   if (!st)
>                       goto out;
>                   st->id = pid;
> -                st->program_num = h->id;
> -                st->pmt_version = h->version;
> -                st->pmt_stream_idx = i;
>                   st->codecpar->codec_type = AVMEDIA_TYPE_DATA;
>                   if (stream_type == 0x86 && prog_reg_desc == AV_RL32("CUEI")) {
>                       mpegts_find_stream_type(st, stream_type, SCTE_types);

LGTM.


More information about the ffmpeg-devel mailing list