diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | gst-libs/gst/riff/riff-media.c | 21 |
2 files changed, 28 insertions, 5 deletions
@@ -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 diff --git a/gst-libs/gst/riff/riff-media.c b/gst-libs/gst/riff/riff-media.c index 20f8d0dc..040f203d 100644 --- a/gst-libs/gst/riff/riff-media.c +++ b/gst-libs/gst/riff/riff-media.c @@ -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; } |