[libav-devel] [PATCH 2/2] movdec: Set frame_size for AMR

Justin Ruggles justin.ruggles at gmail.com
Fri Nov 4 15:45:49 CET 2011


On 11/04/2011 09:25 AM, Martin Storsjö wrote:

> From: Carl Eugen Hoyos <cehoyos at ag.or.at>
> 
> The amr demuxer also sets the frame_size field.


it doesn't need to though. it already sets pkt->duration.

> ---
>  libavformat/mov.c |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index 2036f51..131e2b4 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -1295,10 +1295,13 @@ int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries)
>          st->codec->frame_size= sc->samples_per_frame;
>          st->codec->channels= 1; /* really needed */
>          /* force sample rate for amr, stsd in 3gp does not store sample rate */
> -        if (st->codec->codec_id == CODEC_ID_AMR_NB)
> +        if (st->codec->codec_id == CODEC_ID_AMR_NB) {
>              st->codec->sample_rate = 8000;
> -        else if (st->codec->codec_id == CODEC_ID_AMR_WB)
> +            st->codec->frame_size  = 160;
> +        } else if (st->codec->codec_id == CODEC_ID_AMR_WB) {
>              st->codec->sample_rate = 16000;
> +            st->codec->frame_size  = 320;
> +        }
>          break;
>      case CODEC_ID_MP2:
>      case CODEC_ID_MP3:


On the input side, the only thing frame_size is used for is guessing
packet duration.  The mov/mp4 demuxer already has other ways of
determining correct packet duration.  I don't think this change actually
does anything.

-Justin


More information about the libav-devel mailing list