Re: [FFmpeg-devel] [PATCH] avformat/mpegts: add a ts_id exported option
On 2/19/2024 8:20 AM, Andreas Rheinhardt wrote: James Almer: Replaces AVFormatContext.ts_id Signed-off-by: James Almer --- To be pushed as part of the bump set. libavformat/avformat.h | 6 -- libavformat/mpegts.c | 9 +++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 50bbd1949b..affc5fde07 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1538,12 +1538,6 @@ typedef struct AVFormatContext { #define AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE 1 ///< Shift timestamps so they are non negative #define AVFMT_AVOID_NEG_TS_MAKE_ZERO 2 ///< Shift timestamps so that they start at 0 -/** - * Transport stream id. - * This will be moved into demuxer private options. Thus no API/ABI compatibility - */ -int ts_id; - /** * Audio preload in microseconds. * Note, not all formats support this and unpredictable things may happen if it is used when not supported. diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 1cf390e98e..36fded8db8 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -167,6 +167,8 @@ struct MpegTSContext { int merge_pmt_versions; int max_packet_size; +int id; + /**/ /* private mpegts data */ /* scan context */ @@ -184,7 +186,10 @@ struct MpegTSContext { }; #define MPEGTS_OPTIONS \ -{ "resync_size", "set size limit for looking up a new synchronization", offsetof(MpegTSContext, resync_size), AV_OPT_TYPE_INT, { .i64 = MAX_RESYNC_SIZE}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM } +{ "resync_size", "set size limit for looking up a new synchronization", \ +offsetof(MpegTSContext, resync_size), AV_OPT_TYPE_INT, { .i64 = MAX_RESYNC_SIZE}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM }, \ +{ "ts_id", "transport stream id", \ +offsetof(MpegTSContext, id), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, AV_OPT_FLAG_EXPORT|AV_OPT_FLAG_READONLY } static const AVOption options[] = { MPEGTS_OPTIONS, @@ -2554,7 +2559,7 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len if (skip_identical(h, tssf)) return; -ts->stream->ts_id = h->id; +ts->id = h->id; for (;;) { sid = get16(&p, p_end); Patchwork shows that several ts fate tests fail with this patch, presumably because ffprobe prints exported options (see print_private_data()). Amended locally with the updated refs. Anyway, I don't see why you not add the option now and remove the public field with the bump. Ok, will do that and apply now. Thanks. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH] avformat/mpegts: add a ts_id exported option
James Almer: > Replaces AVFormatContext.ts_id > > Signed-off-by: James Almer > --- > To be pushed as part of the bump set. > > libavformat/avformat.h | 6 -- > libavformat/mpegts.c | 9 +++-- > 2 files changed, 7 insertions(+), 8 deletions(-) > > diff --git a/libavformat/avformat.h b/libavformat/avformat.h > index 50bbd1949b..affc5fde07 100644 > --- a/libavformat/avformat.h > +++ b/libavformat/avformat.h > @@ -1538,12 +1538,6 @@ typedef struct AVFormatContext { > #define AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE 1 ///< Shift timestamps so they > are non negative > #define AVFMT_AVOID_NEG_TS_MAKE_ZERO 2 ///< Shift timestamps so that > they start at 0 > > -/** > - * Transport stream id. > - * This will be moved into demuxer private options. Thus no API/ABI > compatibility > - */ > -int ts_id; > - > /** > * Audio preload in microseconds. > * Note, not all formats support this and unpredictable things may > happen if it is used when not supported. > diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c > index 1cf390e98e..36fded8db8 100644 > --- a/libavformat/mpegts.c > +++ b/libavformat/mpegts.c > @@ -167,6 +167,8 @@ struct MpegTSContext { > int merge_pmt_versions; > int max_packet_size; > > +int id; > + > /**/ > /* private mpegts data */ > /* scan context */ > @@ -184,7 +186,10 @@ struct MpegTSContext { > }; > > #define MPEGTS_OPTIONS \ > -{ "resync_size", "set size limit for looking up a new > synchronization", offsetof(MpegTSContext, resync_size), AV_OPT_TYPE_INT, { > .i64 = MAX_RESYNC_SIZE}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM } > +{ "resync_size", "set size limit for looking up a new > synchronization", \ > +offsetof(MpegTSContext, resync_size), AV_OPT_TYPE_INT, { .i64 = > MAX_RESYNC_SIZE}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM }, \ > +{ "ts_id", "transport stream id", \ > +offsetof(MpegTSContext, id), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, > INT_MAX, AV_OPT_FLAG_EXPORT|AV_OPT_FLAG_READONLY } > > static const AVOption options[] = { > MPEGTS_OPTIONS, > @@ -2554,7 +2559,7 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t > *section, int section_len > > if (skip_identical(h, tssf)) > return; > -ts->stream->ts_id = h->id; > +ts->id = h->id; > > for (;;) { > sid = get16(&p, p_end); Patchwork shows that several ts fate tests fail with this patch, presumably because ffprobe prints exported options (see print_private_data()). Anyway, I don't see why you not add the option now and remove the public field with the bump. - Andreas ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-devel] [PATCH] avformat/mpegts: add a ts_id exported option
Replaces AVFormatContext.ts_id Signed-off-by: James Almer --- To be pushed as part of the bump set. libavformat/avformat.h | 6 -- libavformat/mpegts.c | 9 +++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 50bbd1949b..affc5fde07 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1538,12 +1538,6 @@ typedef struct AVFormatContext { #define AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE 1 ///< Shift timestamps so they are non negative #define AVFMT_AVOID_NEG_TS_MAKE_ZERO 2 ///< Shift timestamps so that they start at 0 -/** - * Transport stream id. - * This will be moved into demuxer private options. Thus no API/ABI compatibility - */ -int ts_id; - /** * Audio preload in microseconds. * Note, not all formats support this and unpredictable things may happen if it is used when not supported. diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 1cf390e98e..36fded8db8 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -167,6 +167,8 @@ struct MpegTSContext { int merge_pmt_versions; int max_packet_size; +int id; + /**/ /* private mpegts data */ /* scan context */ @@ -184,7 +186,10 @@ struct MpegTSContext { }; #define MPEGTS_OPTIONS \ -{ "resync_size", "set size limit for looking up a new synchronization", offsetof(MpegTSContext, resync_size), AV_OPT_TYPE_INT, { .i64 = MAX_RESYNC_SIZE}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM } +{ "resync_size", "set size limit for looking up a new synchronization", \ +offsetof(MpegTSContext, resync_size), AV_OPT_TYPE_INT, { .i64 = MAX_RESYNC_SIZE}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM }, \ +{ "ts_id", "transport stream id", \ +offsetof(MpegTSContext, id), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, AV_OPT_FLAG_EXPORT|AV_OPT_FLAG_READONLY } static const AVOption options[] = { MPEGTS_OPTIONS, @@ -2554,7 +2559,7 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len if (skip_identical(h, tssf)) return; -ts->stream->ts_id = h->id; +ts->id = h->id; for (;;) { sid = get16(&p, p_end); -- 2.43.2 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".