gst-libs/gst/riff/riff-media.c: Add codec_data handling (like asfdemux used to do).
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Fri, 1 Oct 2004 10:50:57 +0000 (10:50 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Fri, 1 Oct 2004 10:50:57 +0000 (10:50 +0000)
Original commit message from CVS:
* gst-libs/gst/riff/riff-media.c:
(gst_riff_create_video_caps_with_data),
(gst_riff_create_audio_caps_with_data):
Add codec_data handling (like asfdemux used to do).
* gst/asfdemux/gstasf.c: (plugin_init):
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init),
(gst_asf_demux_add_audio_stream), (gst_asf_demux_add_video_stream):
Use riff-media for caps creation instead of our own (mostly
broken) copy of its functions.

ChangeLog
gst-libs/gst/riff/riff-media.c

index a615b83..f75ec54 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2004-10-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
 
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data),
+       (gst_riff_create_audio_caps_with_data):
+         Add codec_data handling (like asfdemux used to do).
+       * gst/asfdemux/gstasf.c: (plugin_init):
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init),
+       (gst_asf_demux_add_audio_stream), (gst_asf_demux_add_video_stream):
+         Use riff-media for caps creation instead of our own (mostly
+         broken) copy of its functions.
+
+2004-10-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
        * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_try_capture):
          Don't actually error out if we get another return value than
          -EINVAL. Opposite to what I first thought, drivers have random
index 20f8d0d..040f203 100644 (file)
@@ -185,6 +185,7 @@ gst_riff_create_video_caps_with_data (guint32 codec_fcc,
       break;
 
     case GST_MAKE_FOURCC ('M', 'P', 'G', '4'):
+    case GST_MAKE_FOURCC ('M', 'P', '4', 'S'):
       caps = gst_caps_new_simple ("video/x-msmpeg",
           "msmpegversion", G_TYPE_INT, 41, NULL);
       if (codec_name)
@@ -284,6 +285,7 @@ gst_riff_create_video_caps_with_data (guint32 codec_fcc,
             "palette_data", &value);
         g_value_unset (&value);
         gst_buffer_unref (copy);
+        strf_data = NULL;       /* used */
       }
       if (strf) {
         gst_caps_set_simple (caps,
@@ -320,6 +322,12 @@ gst_riff_create_video_caps_with_data (guint32 codec_fcc,
         "height", GST_TYPE_INT_RANGE, 16, 4096, NULL);
   }
 
+  /* extradata */
+  if (strf_data || strd_data) {
+    gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER,
+        strf_data ? strf_data : strd_data, NULL);
+  }
+
   return caps;
 }
 
@@ -431,8 +439,9 @@ gst_riff_create_audio_caps_with_data (guint16 codec_id,
       break;
     case GST_RIFF_WAVE_FORMAT_WMAV1:
     case GST_RIFF_WAVE_FORMAT_WMAV2:
+    case GST_RIFF_WAVE_FORMAT_WMAV3:
     {
-      gint version = codec_id == GST_RIFF_WAVE_FORMAT_WMAV1 ? 1 : 2;
+      gint version = (codec_id - GST_RIFF_WAVE_FORMAT_WMAV1) + 1;
 
       block_align = TRUE;
 
@@ -449,10 +458,6 @@ gst_riff_create_audio_caps_with_data (guint16 codec_id,
         gst_caps_set_simple (caps,
             "bitrate", GST_TYPE_INT_RANGE, 0, G_MAXINT, NULL);
       }
-      if (strf_data) {
-        gst_caps_set_simple (caps,
-            "codec_data", GST_TYPE_BUFFER, strf_data, NULL);
-      }
       break;
     }
     default:
@@ -482,6 +487,12 @@ gst_riff_create_audio_caps_with_data (guint16 codec_id,
     }
   }
 
+  /* extradata */
+  if (strf_data || strd_data) {
+    gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER,
+        strf_data ? strf_data : strd_data, NULL);
+  }
+
   return caps;
 }