On Fri, Jan 13, 2012 at 12:40:10AM -0500, Justin Ruggles wrote:
> ---
> I forgot that gsm-ms has a larger block duration.
> 
>  libavcodec/gsm_parser.c |   14 ++++++++++++--
>  1 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/libavcodec/gsm_parser.c b/libavcodec/gsm_parser.c
> index a2965d3..89afe80 100644
> --- a/libavcodec/gsm_parser.c
> +++ b/libavcodec/gsm_parser.c
> @@ -31,6 +31,7 @@
>  typedef struct GSMParseContext {
>      ParseContext pc;
>      int block_size;
> +    int duration;
>      int remaining;
>  } GSMParseContext;
>  
> @@ -44,8 +45,14 @@ static int gsm_parse(AVCodecParserContext *s1, 
> AVCodecContext *avctx,
>  
>      if (!s->block_size) {
>          switch (avctx->codec_id) {
> -        case CODEC_ID_GSM:    s->block_size = GSM_BLOCK_SIZE;    break;
> -        case CODEC_ID_GSM_MS: s->block_size = GSM_MS_BLOCK_SIZE; break;
> +        case CODEC_ID_GSM:
> +            s->block_size = GSM_BLOCK_SIZE;
> +            s->duration   = GSM_FRAME_SIZE;
> +            break;
> +        case CODEC_ID_GSM_MS:
> +            s->block_size = GSM_MS_BLOCK_SIZE;
> +            s->duration   = GSM_FRAME_SIZE * 2;
> +            break;
>          default:
>              return AVERROR(EINVAL);
>          }
> @@ -66,6 +73,9 @@ static int gsm_parse(AVCodecParserContext *s1, 
> AVCodecContext *avctx,
>          *poutbuf_size = 0;
>          return buf_size;
>      }
> +
> +    s1->duration = s->duration;
> +
>      *poutbuf      = buf;
>      *poutbuf_size = buf_size;
>      return next;
> -- 

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

Reply via email to