Quoting Lynne (2021-12-08 13:57:45) > 8 Dec 2021, 13:16 by an...@khirnov.net: > > > Quoting Lynne (2021-12-08 10:02:34) > > > >> 8 Dec 2021, 02:06 by jamr...@gmail.com: > >> > >> > From: Anton Khirnov <an...@khirnov.net> > >> > > >> > The new API is more extensible and allows for custom layouts. > >> > More accurate information is exported, eg for decoders that do not > >> > set a channel layout, lavc will not make one up for them. > >> > > >> > Deprecate the old API working with just uint64_t bitmasks. > >> > > >> > Expanded and completed by Vittorio Giovara <vittorio.giov...@gmail.com> > >> > and James Almer <jamr...@gmail.com>. > >> > Signed-off-by: Vittorio Giovara <vittorio.giov...@gmail.com> > >> > Signed-off-by: James Almer <jamr...@gmail.com> > >> > --- > >> > libavutil/channel_layout.c | 498 ++++++++++++++++++++++++++++++------ > >> > libavutil/channel_layout.h | 510 ++++++++++++++++++++++++++++++++++--- > >> > libavutil/version.h | 1 + > >> > 3 files changed, 906 insertions(+), 103 deletions(-) > >> > > >> > /** > >> > * @} > >> > @@ -128,6 +199,157 @@ enum AVMatrixEncoding { > >> > AV_MATRIX_ENCODING_NB > >> > }; > >> > > >> > +/** > >> > + * @} > >> > + */ > >> > + > >> > +/** > >> > + * An AVChannelCustom defines a single channel within a custom order > >> > layout > >> > + * > >> > + * Unlike most structures in FFmpeg, sizeof(AVChannelCustom) is a part > >> > of the > >> > + * public ABI. > >> > + * > >> > + * No new fields may be added to it without a major version bump. > >> > + */ > >> > +typedef struct AVChannelCustom { > >> > + enum AVChannel id; > >> > +} AVChannelCustom; > >> > > >> > >> Consider adding a 25-byte or so of a description field string here that > >> would also be copied if the frame/layout is copied? > >> That way, users can assign a description label to each channel, > >> for example labeling each channel in a 255 channel custom layout > >> Opus stream used in production at a venue somewhere. > >> Also, consider additionally reserving 16-bytes here, just in case. > >> > > > > That would enlarge the layout size by a significant amount. Keep in mind > > that this is all per frame. And for something that very few people would > > want to use. > > > > These descriptors, if anyone really needs them, can live in side data. > > > > That's fine with me. > Can we at least have an opaque uint64_t? I'd accept a uintptr_t, > or an int too, or even a single-byte uint8_t.
like this? diff --git a/libavutil/channel_layout.h b/libavutil/channel_layout.h index 7b77a74b61..7b2ba12532 100644 --- a/libavutil/channel_layout.h +++ b/libavutil/channel_layout.h @@ -252,7 +252,8 @@ enum AVMatrixEncoding { * No new fields may be added to it without a major version bump. */ typedef struct AVChannelCustom { - enum AVChannel id; + enum AVChannel id:16; + int reserved:16; } AVChannelCustom; /** -- Anton Khirnov _______________________________________________ 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".