[FFmpeg-devel] [PATCH 1/2] avformat/dvenc: Replace write_trailer by deinit function

Paul B Mahol onemda at gmail.com
Sun Jan 26 11:12:16 EET 2020


lgtm

On 1/26/20, Andreas Rheinhardt <andreas.rheinhardt at gmail.com> wrote:
> The old write_trailer only freed memory, so it is better to make a
> dedicated deinit function out of it. Given that this function will also
> be called when writing the header fails, one can also remove code that
> frees already allocated fifos when allocating another one fails.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
> There is something strange going on in this muxer: eafa8e85929 increased
> several limits for the number of audio streams to four, yet the initial
> check in dv_init_mux still makes sure that at most two audio streams
> exist. Has updating this (and probably also the comment for n_ast which
> still says that there are up to two stereo tracks allowed) simply been
> forgotten?
>
>  libavformat/dvenc.c | 21 ++++++---------------
>  1 file changed, 6 insertions(+), 15 deletions(-)
>
> diff --git a/libavformat/dvenc.c b/libavformat/dvenc.c
> index a7d1413eb2..b89ad4d1c8 100644
> --- a/libavformat/dvenc.c
> +++ b/libavformat/dvenc.c
> @@ -364,10 +364,6 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
>
>      for (i=0; i < c->n_ast; i++) {
>          if (c->ast[i] && !(c->audio_data[i]=av_fifo_alloc_array(100,
> MAX_AUDIO_FRAME_SIZE))) {
> -            while (i > 0) {
> -                i--;
> -                av_fifo_freep(&c->audio_data[i]);
> -            }
>              goto bail_out;
>          }
>      }
> @@ -378,13 +374,6 @@ bail_out:
>      return NULL;
>  }
>
> -static void dv_delete_mux(DVMuxContext *c)
> -{
> -    int i;
> -    for (i=0; i < c->n_ast; i++)
> -        av_fifo_freep(&c->audio_data[i]);
> -}
> -
>  static int dv_write_header(AVFormatContext *s)
>  {
>      AVRational rate;
> @@ -432,10 +421,12 @@ static int dv_write_packet(struct AVFormatContext *s,
> AVPacket *pkt)
>   * Currently we simply drop the last frame. I don't know whether this
>   * is the best strategy of all
>   */
> -static int dv_write_trailer(struct AVFormatContext *s)
> +static void dv_deinit(AVFormatContext *s)
>  {
> -    dv_delete_mux(s->priv_data);
> -    return 0;
> +    DVMuxContext *c = s->priv_data;
> +
> +    for (int i = 0; i < c->n_ast; i++)
> +        av_fifo_freep(&c->audio_data[i]);
>  }
>
>  AVOutputFormat ff_dv_muxer = {
> @@ -447,5 +438,5 @@ AVOutputFormat ff_dv_muxer = {
>      .video_codec       = AV_CODEC_ID_DVVIDEO,
>      .write_header      = dv_write_header,
>      .write_packet      = dv_write_packet,
> -    .write_trailer     = dv_write_trailer,
> +    .deinit            = dv_deinit,
>  };
> --
> 2.20.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list