]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/tak_parser.c
avcodec: Constify all the AVCodecParsers
[ffmpeg] / libavcodec / tak_parser.c
index 835a47bd529cfc37c1add9b3e2112e410185a1c3..b9f47db8aca71af40d9e3437dc2030a7fad00ddc 100644 (file)
@@ -46,15 +46,16 @@ static int tak_parse(AVCodecParserContext *s, AVCodecContext *avctx,
     int needed   = buf_size ? TAK_MAX_FRAME_HEADER_BYTES : 8;
     int ret;
 
+    *poutbuf      = buf;
+    *poutbuf_size = buf_size;
+
     if (s->flags & PARSER_FLAG_COMPLETE_FRAMES) {
         TAKStreamInfo ti;
         if ((ret = init_get_bits8(&gb, buf, buf_size)) < 0)
-            return ret;
+            return buf_size;
         if (!ff_tak_decode_frame_header(avctx, &gb, &ti, 127))
             s->duration = t->ti.last_frame_samples ? t->ti.last_frame_samples
                                                    : t->ti.frame_samples;
-        *poutbuf      = buf;
-        *poutbuf_size = buf_size;
         return buf_size;
     }
 
@@ -65,7 +66,7 @@ static int tak_parse(AVCodecParserContext *s, AVCodecContext *avctx,
             const uint8_t *tmp_buf = buf;
 
             if (ff_combine_frame(pc, END_NOT_FOUND, &tmp_buf, &tmp_buf_size) != -1)
-                return AVERROR(ENOMEM);
+                goto fail;
             consumed += tmp_buf_size;
             buf      += tmp_buf_size;
             buf_size -= tmp_buf_size;
@@ -78,7 +79,7 @@ static int tak_parse(AVCodecParserContext *s, AVCodecContext *avctx,
 
                 if ((ret = init_get_bits8(&gb, pc->buffer + t->index,
                                           pc->index - t->index)) < 0)
-                    return ret;
+                    goto fail;
                 if (!ff_tak_decode_frame_header(avctx, &gb,
                         pc->frame_start_found ? &ti : &t->ti, 127) &&
                     !ff_tak_check_crc(pc->buffer + t->index,
@@ -103,9 +104,7 @@ found:
 
     if (consumed && !buf_size && next == END_NOT_FOUND ||
         ff_combine_frame(pc, next, &buf, &buf_size) < 0) {
-        *poutbuf      = NULL;
-        *poutbuf_size = 0;
-        return buf_size + consumed;
+        goto fail;
     }
 
     if (next != END_NOT_FOUND) {
@@ -116,9 +115,14 @@ found:
     *poutbuf      = buf;
     *poutbuf_size = buf_size;
     return next;
+
+fail:
+    *poutbuf      = NULL;
+    *poutbuf_size = 0;
+    return buf_size + consumed;
 }
 
-AVCodecParser ff_tak_parser = {
+const AVCodecParser ff_tak_parser = {
     .codec_ids      = { AV_CODEC_ID_TAK },
     .priv_data_size = sizeof(TAKParseContext),
     .parser_parse   = tak_parse,