From 2460b168b4ca308504ee9f7966e3e4cfb3fc90e6 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Fri, 13 Jan 2012 00:40:10 -0500 Subject: [PATCH] gsm parser: set duration --- libavcodec/gsm_parser.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libavcodec/gsm_parser.c b/libavcodec/gsm_parser.c index a2965d3fb5..89afe80ef0 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;