Message ID | 20220919230336.366882-1-vigneshv@google.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel] avformat/movenc: Write auxi box for animated AVIF with alpha | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
On Mon, Sep 19, 2022 at 4:03 PM Vignesh Venkatasubramanian <vigneshv-at-google.com@ffmpeg.org> wrote: > > According to the HEIF specification Section 7.5.3.1, tracks with It might be worth adding ISO/IEC 23008-12 for added precision. > handler_type 'auxv' must contain a 'auxi' box in its > SampleEntry to notify the nature of the auxiliary track to the > decoder. > > The content is the same as the 'auxC' box. So paramterize and re-use parameterize > the existing function. > > Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com> > --- > libavformat/movenc.c | 27 +++++++++++++++------------ > 1 file changed, 15 insertions(+), 12 deletions(-) > lgtm.
On Tue, Sep 20, 2022 at 12:38 PM James Zern <jzern@google.com> wrote: > > On Mon, Sep 19, 2022 at 4:03 PM Vignesh Venkatasubramanian > <vigneshv-at-google.com@ffmpeg.org> wrote: > > > > According to the HEIF specification Section 7.5.3.1, tracks with > > It might be worth adding ISO/IEC 23008-12 for added precision. > Done. > > handler_type 'auxv' must contain a 'auxi' box in its > > SampleEntry to notify the nature of the auxiliary track to the > > decoder. > > > > The content is the same as the 'auxC' box. So paramterize and re-use > > parameterize > oops, fixed. > > the existing function. > > > > Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com> > > --- > > libavformat/movenc.c | 27 +++++++++++++++------------ > > 1 file changed, 15 insertions(+), 12 deletions(-) > > > > lgtm.
diff --git a/libavformat/movenc.c b/libavformat/movenc.c index c8b2e141cb..754f95912a 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -2179,6 +2179,16 @@ static int mov_write_ccst_tag(AVIOContext *pb) return update_size(pb, pos); } +static int mov_write_aux_tag(AVIOContext *pb, const char *aux_type) +{ + int64_t pos = avio_tell(pb); + avio_wb32(pb, 0); /* size */ + ffio_wfourcc(pb, aux_type); + avio_wb32(pb, 0); /* Version & flags */ + avio_write(pb, "urn:mpeg:mpegB:cicp:systems:auxiliary:alpha\0", 44); + return update_size(pb, pos); +} + static int mov_write_video_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContext *mov, MOVTrack *track) { int ret = AVERROR_BUG; @@ -2363,8 +2373,11 @@ static int mov_write_video_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContex if (avid) avio_wb32(pb, 0); - if (track->mode == MODE_AVIF) + if (track->mode == MODE_AVIF) { mov_write_ccst_tag(pb); + if (s->nb_streams > 0 && track == &mov->tracks[1]) + mov_write_aux_tag(pb, "auxi"); + } return update_size(pb, pos); } @@ -3044,16 +3057,6 @@ static int mov_write_pixi_tag(AVIOContext *pb, MOVMuxContext *mov, AVFormatConte return update_size(pb, pos); } -static int mov_write_auxC_tag(AVIOContext *pb) -{ - int64_t pos = avio_tell(pb); - avio_wb32(pb, 0); /* size */ - ffio_wfourcc(pb, "auxC"); - avio_wb32(pb, 0); /* Version & flags */ - avio_write(pb, "urn:mpeg:mpegB:cicp:systems:auxiliary:alpha\0", 44); - return update_size(pb, pos); -} - static int mov_write_ipco_tag(AVIOContext *pb, MOVMuxContext *mov, AVFormatContext *s) { int64_t pos = avio_tell(pb); @@ -3066,7 +3069,7 @@ static int mov_write_ipco_tag(AVIOContext *pb, MOVMuxContext *mov, AVFormatConte if (!i) mov_write_colr_tag(pb, &mov->tracks[0], 0); else - mov_write_auxC_tag(pb); + mov_write_aux_tag(pb, "auxC"); } return update_size(pb, pos); }
According to the HEIF specification Section 7.5.3.1, tracks with handler_type 'auxv' must contain a 'auxi' box in its SampleEntry to notify the nature of the auxiliary track to the decoder. The content is the same as the 'auxC' box. So paramterize and re-use the existing function. Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com> --- libavformat/movenc.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-)