Message ID | CA+F=gyPdz=Ywy-=u6Y5RLXEZFNrFV9+tBMWoypBzj1TfqK2RDg@mail.gmail.com |
---|---|
State | Superseded |
Headers | show |
On Tue, Aug 01, 2017 at 02:25:26PM +0200, Mark Timmerman wrote: > Add synchronous metadata to mpegtsenc > * Added AV_CODEC_ID_SYNCHRONOUS_METADATA > * PMT will have metadata_descriptor and metadata_std_descriptor > in accordance with MISB ST 1402.2 > * stream_type will be 0x15 metadata carried in PES packets > * stream_id will be 0xfc metadata stream > > Users must supply Metadata Access Unit to the packet before writing. > --- > libavcodec/avcodec.h | 1 + > libavformat/mpegtsenc.c | 22 ++++++++++++++++++++++ > 2 files changed, 23 insertions(+) > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h > index c594993..fe4e538 100644 > --- a/libavcodec/avcodec.h > +++ b/libavcodec/avcodec.h > @@ -682,6 +682,7 @@ enum AVCodecID { > AV_CODEC_ID_DVD_NAV, > AV_CODEC_ID_TIMED_ID3, > AV_CODEC_ID_BIN_DATA, > + AV_CODEC_ID_SYNCHRONOUS_METADATA, > > > AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like > AV_CODEC_ID_NONE) but lavf should attempt to identify it > diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c > index fdfa544..35907da 100644 > --- a/libavformat/mpegtsenc.c > +++ b/libavformat/mpegtsenc.c > @@ -387,6 +387,7 @@ static int mpegts_write_pmt(AVFormatContext *s, > MpegTSService *service) > stream_type = STREAM_TYPE_PRIVATE_DATA; > break; > case AV_CODEC_ID_TIMED_ID3: > + case AV_CODEC_ID_SYNCHRONOUS_METADATA: > stream_type = STREAM_TYPE_METADATA; > break; > default: > @@ -641,6 +642,27 @@ static int mpegts_write_pmt(AVFormatContext *s, > MpegTSService *service) > *q++ = 'L'; > *q++ = 'V'; > *q++ = 'A'; > + } else if (st->codecpar->codec_id == > AV_CODEC_ID_SYNCHRONOUS_METADATA) { > + const char *tag = "KLVA"; > + *q++ = 0x26; /* desctiptor_tag = > metadata_descriptor */ this patch is corrupted by newlines [...]
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index c594993..fe4e538 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -682,6 +682,7 @@ enum AVCodecID { AV_CODEC_ID_DVD_NAV, AV_CODEC_ID_TIMED_ID3, AV_CODEC_ID_BIN_DATA, + AV_CODEC_ID_SYNCHRONOUS_METADATA, AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index fdfa544..35907da 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -387,6 +387,7 @@ static int mpegts_write_pmt(AVFormatContext *s, MpegTSService *service) stream_type = STREAM_TYPE_PRIVATE_DATA; break; case AV_CODEC_ID_TIMED_ID3: + case AV_CODEC_ID_SYNCHRONOUS_METADATA: stream_type = STREAM_TYPE_METADATA; break;