[FFmpeg-devel] [PATCH] s302m: s/bits_per_coded_sample/bits_per_raw_sample

Hendrik Leppkes h.leppkes at gmail.com
Fri Sep 6 18:45:02 CEST 2013


On Fri, Sep 6, 2013 at 6:40 PM, Paul B Mahol <onemda at gmail.com> wrote:

> bits_per_coded_sample should be set from demuxer and
> not from decoder.
>
> Signed-off-by: Paul B Mahol <onemda at gmail.com>
> ---
>  libavcodec/s302m.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/libavcodec/s302m.c b/libavcodec/s302m.c
> index 5f73148..56aea75 100644
> --- a/libavcodec/s302m.c
> +++ b/libavcodec/s302m.c
> @@ -59,7 +59,7 @@ static int s302m_parse_frame_header(AVCodecContext
> *avctx, const uint8_t *buf,
>      }
>
>      /* Set output properties */
> -    avctx->bits_per_coded_sample = bits;
> +    avctx->bits_per_raw_sample = bits;
>      if (bits > 16)
>          avctx->sample_fmt = AV_SAMPLE_FMT_S32;
>      else
> @@ -80,10 +80,10 @@ static int s302m_parse_frame_header(AVCodecContext
> *avctx, const uint8_t *buf,
>              avctx->channel_layout = AV_CH_LAYOUT_5POINT1_BACK |
> AV_CH_LAYOUT_STEREO_DOWNMIX;
>      }
>      avctx->sample_rate = 48000;
> -    avctx->bit_rate    = 48000 * avctx->channels *
> (avctx->bits_per_coded_sample + 4) +
> +    avctx->bit_rate    = 48000 * avctx->channels *
> (avctx->bits_per_raw_sample + 4) +
>                           32 * (48000 / (buf_size * 8 /
>                                          (avctx->channels *
> -                                         (avctx->bits_per_coded_sample +
> 4))));
> +                                         (avctx->bits_per_raw_sample +
> 4))));
>
>      return frame_size;
>  }
> @@ -104,14 +104,14 @@ static int s302m_decode_frame(AVCodecContext *avctx,
> void *data,
>      buf      += AES3_HEADER_LEN;
>
>      /* get output buffer */
> -    block_size = (avctx->bits_per_coded_sample + 4) / 4;
> +    block_size = (avctx->bits_per_raw_sample + 4) / 4;
>      frame->nb_samples = 2 * (buf_size / block_size) / avctx->channels;
>      if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
>          return ret;
>
>      buf_size = (frame->nb_samples * avctx->channels / 2) * block_size;
>
> -    if (avctx->bits_per_coded_sample == 24) {
> +    if (avctx->bits_per_raw_sample == 24) {
>          uint32_t *o = (uint32_t *)frame->data[0];
>          for (; buf_size > 6; buf_size -= 7) {
>              *o++ = (ff_reverse[buf[2]]        << 24) |
> @@ -123,7 +123,7 @@ static int s302m_decode_frame(AVCodecContext *avctx,
> void *data,
>                     (ff_reverse[buf[3] & 0x0f] <<  4);
>              buf += 7;
>          }
> -    } else if (avctx->bits_per_coded_sample == 20) {
> +    } else if (avctx->bits_per_raw_sample == 20) {
>          uint32_t *o = (uint32_t *)frame->data[0];
>          for (; buf_size > 5; buf_size -= 6) {
>              *o++ = (ff_reverse[buf[2] & 0xf0] << 28) |
> --
> 1.7.11.2
>

LGTM


More information about the ffmpeg-devel mailing list