[Ffmpeg-cvslog] r6633 - trunk/libavformat/amr.c

michael subversion
Wed Oct 11 01:45:13 CEST 2006


Author: michael
Date: Wed Oct 11 01:45:12 2006
New Revision: 6633

Modified:
   trunk/libavformat/amr.c

Log:
factorize (untested)


Modified: trunk/libavformat/amr.c
==============================================================================
--- trunk/libavformat/amr.c	(original)
+++ trunk/libavformat/amr.c	Wed Oct 11 01:45:12 2006
@@ -134,78 +134,49 @@
                           AVPacket *pkt)
 {
     AVCodecContext *enc = s->streams[0]->codec;
+    int read, size, toc, mode;
+
+    if (url_feof(&s->pb))
+    {
+        return AVERROR_IO;
+    }
+
+    toc=get_byte(&s->pb);
+    mode = (toc >> 3) & 0x0F;
 
     if (enc->codec_id == CODEC_ID_AMR_NB)
     {
         static const uint8_t packed_size[16] = {12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0, 0, 0};
-        uint8_t toc, q, ft;
-        int read;
-        int size;
-
-        if (url_feof(&s->pb))
-        {
-            return AVERROR_IO;
-        }
-
-        toc=get_byte(&s->pb);
-        q  = (toc >> 2) & 0x01;
-        ft = (toc >> 3) & 0x0F;
-
-        size=packed_size[ft];
-
-        if (av_new_packet(pkt, size+1))
-        {
-            return AVERROR_IO;
-        }
-        pkt->stream_index = 0;
-        pkt->pos= url_ftell(&s->pb);
-        pkt->data[0]=toc;
-
-        read = get_buffer(&s->pb, pkt->data+1, size);
-
-        if (read != size)
-        {
-            av_free_packet(pkt);
-            return AVERROR_IO;
-        }
+
+        size=packed_size[mode]+1;
     }
     else if(enc->codec_id == CODEC_ID_AMR_WB)
     {
         static uint8_t packed_size[16] = {18, 24, 33, 37, 41, 47, 51, 59, 61, 6, 6, 0, 0, 0, 1, 1};
-        uint8_t toc, mode;
-        int read;
-        int size;
-
-        if (url_feof(&s->pb))
-        {
-            return AVERROR_IO;
-        }
-
-        toc=get_byte(&s->pb);
-        mode = (uint8_t)((toc >> 3) & 0x0F);
-        size = packed_size[mode];
-
-        if ( (size==0) || av_new_packet(pkt, size))
-        {
-            return AVERROR_IO;
-        }
-
-        pkt->stream_index = 0;
-        pkt->pos= url_ftell(&s->pb);
-        pkt->data[0]=toc;
-
-        read = get_buffer(&s->pb, pkt->data+1, size-1);
-
-        if (read != (size-1))
-        {
-            av_free_packet(pkt);
-            return AVERROR_IO;
-        }
+
+        size=packed_size[mode];
     }
     else
     {
         assert(0);
     }
+
+    if ( (size==0) || av_new_packet(pkt, size))
+    {
+        return AVERROR_IO;
+    }
+
+    pkt->stream_index = 0;
+    pkt->pos= url_ftell(&s->pb);
+    pkt->data[0]=toc;
+    read = get_buffer(&s->pb, pkt->data+1, size-1);
+
+    if (read != size-1)
+    {
+        av_free_packet(pkt);
+        return AVERROR_IO;
+    }
+
     return 0;
 }
 




More information about the ffmpeg-cvslog mailing list