[FFmpeg-devel] [PATCH v2] avformat/vpcc: fix VP9 metadata in FLV and RTMP

Steven Liu lingjiujianke at gmail.com
Mon Sep 4 09:24:14 EEST 2023


James Almer <jamrial at gmail.com> 于2023年9月4日周一 02:49写道:
>
> On 9/3/2023 1:45 PM, aler9 wrote:
> > I looked again at your previous comment and you suggested to explicitly
> > mention that this patch will affect FLV too, which i did in the title.
> >
> > I didn't see any request to change the code. Do you have any suggestion
> > regarding the code?
>
> I see the change in the commit message that i had missed, so nevermind.
>
> >
> >
> >
> > Il giorno dom 3 set 2023 alle ore 18:17 James Almer <jamrial at gmail.com> ha
> > scritto:
> >
> >> On 9/3/2023 1:15 PM, aler9 wrote:
> >>> sorry, to git add what?
> >>
> >> You say you integrated my comment, but the contents of the patch are
> >> exactly the same.
> >>
> >>>
> >>> Il giorno dom 3 set 2023 alle ore 18:02 James Almer <jamrial at gmail.com>
> >> ha
> >>> scritto:
> >>>
> >>>> On 9/3/2023 1:00 PM, Alessandro Ros wrote:
> >>>>> I integrated James A. comment and fixed patch format.
> >>>>
> >>>> I think you forgot to git add.
> >>>>
> >>>>>
> >>>>> In order to send VP9 tracks with FLV or RTMP, the enhanced RTMP
> >>>>> specification tells that VPCodecConfigurationRecord, a.k.a. vpcC
> >>>>> ISO-BMFF box, must be inserted into a metadata message. However, the
> >>>>> function responsible for generating vpcCs currently returns invalid
> >>>>> boxes, that are lacking the Version and Flag fields, inherited from
> >>>>> FullBox. For some reason, both flags were being added manually in
> >>>>> movenc. This patch fixes the issue.
> >>>>>
> >>>>> Signed-off-by: Alessandro Ros <aler9.dev at gmail.com>
> >>>>> ---
> >>>>>     libavformat/movenc.c | 3 ---
> >>>>>     libavformat/vpcc.c   | 2 ++
> >>>>>     2 files changed, 2 insertions(+), 3 deletions(-)
> >>>>>
> >>>>> diff --git a/libavformat/movenc.c b/libavformat/movenc.c
> >>>>> index 7ef6cef46a..696ae5a6c9 100644
> >>>>> --- a/libavformat/movenc.c
> >>>>> +++ b/libavformat/movenc.c
> >>>>> @@ -1441,10 +1441,7 @@ static int mov_write_vpcc_tag(AVFormatContext
> >> *s,
> >>>> AVIOContext *pb, MOVTrack *tra
> >>>>>
> >>>>>         avio_wb32(pb, 0);
> >>>>>         ffio_wfourcc(pb, "vpcC");
> >>>>> -    avio_w8(pb, 1); /* version */
> >>>>> -    avio_wb24(pb, 0); /* flags */
> >>>>>         ff_isom_write_vpcc(s, pb, track->vos_data, track->vos_len,
> >>>> track->par);
> >>>>> -
> >>>>>         return update_size(pb, pos);
> >>>>>     }
> >>>>>
> >>>>> diff --git a/libavformat/vpcc.c b/libavformat/vpcc.c
> >>>>> index ea66959abf..256407dd6d 100644
> >>>>> --- a/libavformat/vpcc.c
> >>>>> +++ b/libavformat/vpcc.c
> >>>>> @@ -208,6 +208,8 @@ int ff_isom_write_vpcc(AVFormatContext *s,
> >>>> AVIOContext *pb,
> >>>>>         if (ret < 0)
> >>>>>             return ret;
> >>>>>
> >>>>> +    avio_w8(pb, 1); /* version */
> >>>>> +    avio_wb24(pb, 0); /* flags */
> >>>>>         avio_w8(pb, vpcc.profile);
> >>>>>         avio_w8(pb, vpcc.level);
> >>>>>         avio_w8(pb, (vpcc.bitdepth << 4) | (vpcc.chroma_subsampling <<
> >> 1)
> >>>> | vpcc.full_range_flag);
>
> Will apply soon unless someone objects.
No objects, and lgtm.



Thanks
Steven


More information about the ffmpeg-devel mailing list