]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/electronicarts.c
Add a @todo with a comment from Kostya so we don't forget to optimize that at
[ffmpeg] / libavformat / electronicarts.c
index 09da524ffd6246e0d40213e962057f77e34dbd9f..fe19e70f73fc6dbc14a9ba45d57ae42a6aff6ce4 100644 (file)
  */
 
 /**
- * @file electronicarts.c
+ * @file libavformat/electronicarts.c
  * Electronic Arts Multimedia file demuxer (WVE/UV2/etc.)
  * by Robin Kay (komadori at gekkou.co.uk)
  */
 
+#include "libavutil/intreadwrite.h"
 #include "avformat.h"
 
 #define SCHl_TAG MKTAG('S', 'C', 'H', 'l')
@@ -47,6 +48,9 @@
 #define mTCD_TAG MKTAG('m', 'T', 'C', 'D')    /* MDEC */
 #define MADk_TAG MKTAG('M', 'A', 'D', 'k')    /* MAD i-frame */
 #define MPCh_TAG MKTAG('M', 'P', 'C', 'h')    /* MPEG2 */
+#define TGQs_TAG MKTAG('T', 'G', 'Q', 's')    /* TGQ i-frame (appears in .TGQ files) */
+#define pQGT_TAG MKTAG('p', 'Q', 'G', 'T')    /* TGQ i-frame (appears in .UV files) */
+#define pIQT_TAG MKTAG('p', 'I', 'Q', 'T')    /* TQI/UV2 i-frame (.UV2/.WVE) */
 #define MVhd_TAG MKTAG('M', 'V', 'h', 'd')
 #define MV0K_TAG MKTAG('M', 'V', '0', 'K')
 #define MV0F_TAG MKTAG('M', 'V', '0', 'F')
@@ -341,6 +345,15 @@ static int process_ea_header(AVFormatContext *s) {
                 ea->video_codec = CODEC_ID_MPEG2VIDEO;
                 break;
 
+            case pQGT_TAG:
+            case TGQs_TAG:
+                ea->video_codec = CODEC_ID_TGQ;
+                break;
+
+            case pIQT_TAG:
+                ea->video_codec = CODEC_ID_TQI;
+                break;
+
             case MVhd_TAG :
                 err = process_video_header_vp6(s);
                 break;
@@ -431,7 +444,7 @@ static int ea_read_packet(AVFormatContext *s,
     int packet_read = 0;
     unsigned int chunk_type, chunk_size;
     int key = 0;
-    int num_samples;
+    int av_uninit(num_samples);
 
     while (!packet_read) {
         chunk_type = get_le32(pb);
@@ -497,6 +510,8 @@ static int ea_read_packet(AVFormatContext *s,
 
         case MVIh_TAG:
         case kVGT_TAG:
+        case pQGT_TAG:
+        case TGQs_TAG:
             key = PKT_FLAG_KEY;
         case MVIf_TAG:
         case fVGT_TAG:
@@ -511,6 +526,7 @@ static int ea_read_packet(AVFormatContext *s,
 
         case MV0K_TAG:
         case MPCh_TAG:
+        case pIQT_TAG:
             key = PKT_FLAG_KEY;
         case MV0F_TAG:
 get_video_packet: