diff options
Diffstat (limited to 'lib/ffmpeg/libavcodec/latm_parser.c')
-rw-r--r-- | lib/ffmpeg/libavcodec/latm_parser.c | 66 |
1 files changed, 31 insertions, 35 deletions
diff --git a/lib/ffmpeg/libavcodec/latm_parser.c b/lib/ffmpeg/libavcodec/latm_parser.c index 4ac90c8d3d..8e42c6ace9 100644 --- a/lib/ffmpeg/libavcodec/latm_parser.c +++ b/lib/ffmpeg/libavcodec/latm_parser.c @@ -19,21 +19,16 @@ */ /** - * @file latm_parser.c - * LATM parser + * @file + * AAC LATM parser */ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <sys/types.h> - +#include <stdint.h> #include "parser.h" -#define LATM_HEADER 0x56e000 // 0x2b7 (11 bits) -#define LATM_MASK 0xFFE000 // top 11 bits -#define LATM_SIZE_MASK 0x001FFF // bottom 13 bits +#define LATM_HEADER 0x56e000 // 0x2b7 (11 bits) +#define LATM_MASK 0xFFE000 // top 11 bits +#define LATM_SIZE_MASK 0x001FFF // bottom 13 bits typedef struct LATMParseContext{ ParseContext pc; @@ -45,71 +40,72 @@ typedef struct LATMParseContext{ * @return the position of the first byte of the next frame, or -1 */ static int latm_find_frame_end(AVCodecParserContext *s1, const uint8_t *buf, - int buf_size) { + int buf_size) +{ LATMParseContext *s = s1->priv_data; - ParseContext *pc = &s->pc; + ParseContext *pc = &s->pc; int pic_found, i; uint32_t state; pic_found = pc->frame_start_found; - state = pc->state; + state = pc->state; i = 0; - if(!pic_found){ - for(i=0; i<buf_size; i++){ + if (!pic_found) { + for (i = 0; i < buf_size; i++) { state = (state<<8) | buf[i]; - if((state & LATM_MASK) == LATM_HEADER) { + if ((state & LATM_MASK) == LATM_HEADER) { i++; - s->count = - i; - pic_found=1; + s->count = -i; + pic_found = 1; break; } } } - if(pic_found){ + if (pic_found) { /* EOF considered as end of frame */ if (buf_size == 0) return 0; - if((state & LATM_SIZE_MASK) - s->count <= buf_size) { + if ((state & LATM_SIZE_MASK) - s->count <= buf_size) { pc->frame_start_found = 0; - pc->state = -1; + pc->state = -1; return (state & LATM_SIZE_MASK) - s->count; - } + } } - s->count += buf_size; + s->count += buf_size; pc->frame_start_found = pic_found; - pc->state = state; + pc->state = state; + return END_NOT_FOUND; } -static int latm_parse(AVCodecParserContext *s1, - AVCodecContext *avctx, - const uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size) +static int latm_parse(AVCodecParserContext *s1, AVCodecContext *avctx, + const uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size) { LATMParseContext *s = s1->priv_data; - ParseContext *pc = &s->pc; + ParseContext *pc = &s->pc; int next; - if(s1->flags & PARSER_FLAG_COMPLETE_FRAMES){ + if (s1->flags & PARSER_FLAG_COMPLETE_FRAMES) { next = buf_size; - }else{ + } else { next = latm_find_frame_end(s1, buf, buf_size); if (ff_combine_frame(pc, next, &buf, &buf_size) < 0) { - *poutbuf = NULL; + *poutbuf = NULL; *poutbuf_size = 0; return buf_size; } } - *poutbuf = buf; + *poutbuf = buf; *poutbuf_size = buf_size; return next; } -AVCodecParser latm_parser = { +AVCodecParser ff_aac_latm_parser = { { CODEC_ID_AAC_LATM }, sizeof(LATMParseContext), NULL, |