Split ac3 byte swapping into a separate function.
authorRonald S. Bultje <rsbultje@gmail.com>
Thu, 8 Nov 2007 15:52:53 +0000 (15:52 +0000)
committerBenoit Fouet <benoit.fouet@free.fr>
Thu, 8 Nov 2007 15:52:53 +0000 (15:52 +0000)
Patch by Ronald S. Bultje: rsbultje gmail com
Original thread: Re: [FFmpeg-devel] [PATCH 4/6] rmdec.c: rm_ac3_swap_bytes()
Date: 11/05/2007 09:27 PM

Originally committed as revision 10964 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/rmdec.c

index 533a1a5..254620a 100644 (file)
@@ -535,6 +535,21 @@ static int rm_assemble_video_frame(AVFormatContext *s, RMContext *rm, AVPacket *
     return 1;
 }
 
+static inline void
+rm_ac3_swap_bytes (AVStream *st, AVPacket *pkt)
+{
+    uint8_t *ptr;
+    int j;
+
+    if (st->codec->codec_id == CODEC_ID_AC3) {
+        ptr = pkt->data;
+        for (j=0;j<pkt->size;j+=2) {
+            FFSWAP(int, ptr[0], ptr[1]);
+            ptr += 2;
+        }
+    }
+}
+
 static int
 ff_rm_parse_packet (AVFormatContext *s, AVStream *st, int len, AVPacket *pkt,
                     int *seq, int *flags, int64_t *timestamp)
@@ -658,9 +673,8 @@ static int rm_read_packet(AVFormatContext *s, AVPacket *pkt)
     RMContext *rm = s->priv_data;
     ByteIOContext *pb = &s->pb;
     AVStream *st;
-    int i, len, j;
+    int i, len;
     int64_t timestamp, pos;
-    uint8_t *ptr;
     int flags;
 
     if (rm->audio_pkt_cnt) {
@@ -710,14 +724,7 @@ resync:
         }
     }
 
-    /* for AC3, needs to swap bytes */
-    if (st->codec->codec_id == CODEC_ID_AC3) {
-        ptr = pkt->data;
-        for(j=0;j<pkt->size;j+=2) {
-            FFSWAP(int, ptr[0], ptr[1]);
-            ptr += 2;
-        }
-    }
+    rm_ac3_swap_bytes(st, pkt);
     return 0;
 }