[FFmpeg-devel] [PATCH 16/18] lavf/dv: set audio bitrate only at stream creation

Anton Khirnov anton at khirnov.net
Thu Aug 25 13:23:19 EEST 2022


Quoting Andreas Rheinhardt (2022-08-24 16:33:22)
> Anton Khirnov:
> > Demuxers are not supposed to update AVCodecParameters after the stream
> > was seen by the caller. This value is not important enough to support
> > dynamic updates for.
> > ---
> >  libavformat/dv.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/libavformat/dv.c b/libavformat/dv.c
> > index f65c2d596f..9c8b0a262c 100644
> > --- a/libavformat/dv.c
> > +++ b/libavformat/dv.c
> > @@ -280,6 +280,7 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame)
> >              c->ast[i]->codecpar->codec_id   = AV_CODEC_ID_PCM_S16LE;
> >              c->ast[i]->codecpar->ch_layout  = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO;
> >              c->ast[i]->start_time           = 0;
> > +            c->ast[i]->codecpar->bit_rate   = 2 * dv_audio_frequency[freq] * 16;
> >  
> >              c->audio_pkt[i].size         = 0;
> >              c->audio_pkt[i].data         = c->audio_buf[i];
> > @@ -290,7 +291,6 @@ static int dv_extract_audio_info(DVDemuxContext *c, const uint8_t *frame)
> >              c->audio_pkt[i].pos          = -1;
> >          }
> >          c->ast[i]->codecpar->sample_rate    = dv_audio_frequency[freq];
> > -        c->ast[i]->codecpar->bit_rate       = 2 * dv_audio_frequency[freq] * 16;
> >      }
> >      c->ach = ach;
> >  
> 
> FYI: dv_extract_video_info() also sets bit_rate (and avg_frame_rate and
> sample_aspect_ratio) on every packet.

I know, it's just that I already spent way more time on this than I
intended, given how nobody really cares about DV (so much of the code is
blamed directly to original commits from 2003).

And while dropping bitrate is rather uncontroversial, since it's
informational only, the framerate and SAR might actually be used for
presentation, so handling them requires more care. I've considered using
AVStream.event_flags for signalling updated values to the user, but then
it might become tricky to synchronize the values seen by the user with
the packets returned from the demuxer (given the presence of parsers).

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list