On Mon, Sep 2, 2013 at 10:56 AM, Christian Schmidt <[email protected]>wrote:

> Submit a correct pointer to av_free() on shutdown.
>
> The sample buffering logic does not take into account that the blocksize
> could change. Reset the buffer if the channel configuration  changes,
> since if there are leftover samples, it is most likely a broken or
> misconcatenated stream. This could lead to negative numbers for
> missing_samples during decoding.
>
> Thanks to Michael Niedermeyer for pointing these out.
> ---
>  libavcodec/pcm-dvd.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/libavcodec/pcm-dvd.c b/libavcodec/pcm-dvd.c
> index 9fd6d13..33ff8c3 100644
> --- a/libavcodec/pcm-dvd.c
> +++ b/libavcodec/pcm-dvd.c
> @@ -1,6 +1,6 @@
>  /*
>   * LPCM codecs for PCM formats found in Video DVD streams
> - * Copyright (c) 2009-2013 Christian Schmidt
> + * Copyright (c) 2013 Christian Schmidt
>   *
>   * This file is part of Libav.
>   *
> @@ -46,7 +46,6 @@ static av_cold int pcm_dvd_decode_init(AVCodecContext
> *avctx)
>      /* reserve space for 8 channels, 3 bytes/sample, 4 samples/block */
>      if (!(s->extra_samples = av_malloc(8 * 3 * 4)))
>          return AVERROR(ENOMEM);
> -    s->extra_sample_count = 0;
>
>      return 0;
>  }
> @@ -55,8 +54,7 @@ static av_cold int pcm_dvd_decode_uninit(AVCodecContext
> *avctx)
>  {
>      PCMDVDContext *s = avctx->priv_data;
>
> -    if (s->extra_samples)
> -        av_free(s->extra_samples);
> +    av_free(&s->extra_samples);
>

This should probably be av_free*p*


>
>      return 0;
>  }
> @@ -81,6 +79,9 @@ static int pcm_dvd_parse_header(AVCodecContext *avctx,
> const uint8_t *header)
>       * header[2] dynamic range control (0x80 = off)
>       */
>
> +    /* Discard potentially existing leftover samples from old channel
> layout */
> +    s->extra_sample_count = 0;
> +
>      /* get the sample depth and derive the sample format from it */
>      avctx->bits_per_coded_sample = 16 + (header[1] >> 6 & 3) * 4;
>      if (avctx->bits_per_coded_sample == 28) {
> --
> 1.8.2.1
>
> _______________________________________________
> libav-devel mailing list
> [email protected]
> https://lists.libav.org/mailman/listinfo/libav-devel
>


Otherwise LGTM.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to