add support for big_endian encoded headers
authorAurelien Jacobs <aurel@gnuage.org>
Thu, 18 Oct 2007 22:39:27 +0000 (22:39 +0000)
committerAurelien Jacobs <aurel@gnuage.org>
Thu, 18 Oct 2007 22:39:27 +0000 (22:39 +0000)
Originally committed as revision 10795 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/electronicarts.c

index b41f8d51ed6f2fe6fdb14fd5a987fc80d876afc8..63920198bf4111450429da855bac75cd8d8c8902 100644 (file)
@@ -40,6 +40,8 @@
 #define EA_PREAMBLE_SIZE 8
 
 typedef struct EaDemuxContext {
+    int big_endian;
+
     int video_codec;
     AVRational time_base;
     int video_stream_index;
@@ -170,6 +172,10 @@ static int process_ea_header(AVFormatContext *s) {
 
         blockid = get_le32(pb);
         size = get_le32(pb);
+        if (i == 0)
+            ea->big_endian = size > 0x000FFFFF;
+        if (ea->big_endian)
+            size = bswap_32(size);
 
         switch (blockid) {
             case SCHl_TAG :