ext/ffmpeg/gstffmpegcodecmap.c: Add Real Video 3.0 and remove some bogus caps.

Original commit message from CVS:
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
(gst_ffmpeg_caps_with_codecid), (gst_ffmpeg_get_codecid_longname):
Add Real Video 3.0 and remove some bogus caps.
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_open),
(gst_ffmpegdec_video_frame):
When skipping because of QoS, pretend we consumed all bytes for the
frame so that the pcache's timestamp is updated correctly.
This commit is contained in:
Wim Taymans 2007-10-01 17:27:42 +00:00
parent f616f4aa7c
commit 503ab7bf82
4 changed files with 31 additions and 5 deletions

View file

@ -1,3 +1,14 @@
2007-10-01 Wim Taymans <wim.taymans@gmail.com>
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
(gst_ffmpeg_caps_with_codecid), (gst_ffmpeg_get_codecid_longname):
Add Real Video 3.0 and remove some bogus caps.
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_open),
(gst_ffmpegdec_video_frame):
When skipping because of QoS, pretend we consumed all bytes for the
frame so that the pcache's timestamp is updated correctly.
2007-08-14 Edward Hervey <edward@fluendo.com>
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_register):

2
common

@ -1 +1 @@
Subproject commit b3fe2a25c1cd0f4b021795d0db7330aeb338da7c
Subproject commit 34d7d649b972ea4915611a6ed88f01613bf32777

View file

@ -252,6 +252,7 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id,
case CODEC_ID_RV10:
case CODEC_ID_RV20:
case CODEC_ID_RV30:
case CODEC_ID_RV40:
{
gint version;
@ -260,6 +261,9 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id,
case CODEC_ID_RV40:
version = 4;
break;
case CODEC_ID_RV30:
version = 3;
break;
case CODEC_ID_RV20:
version = 2;
break;
@ -274,7 +278,11 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id,
"rmversion", G_TYPE_INT, version, NULL);
if (context) {
gst_caps_set_simple (caps,
"rmsubid", GST_TYPE_FOURCC, context->sub_id, NULL);
"format", G_TYPE_INT, context->sub_id, NULL);
if (context->extradata_size >= 8) {
gst_caps_set_simple (caps,
"subformat", G_TYPE_INT, GST_READ_UINT32_BE (context->extradata), NULL);
}
}
}
break;
@ -1599,13 +1607,11 @@ gst_ffmpeg_caps_with_codecid (enum CodecID codec_id,
case CODEC_ID_RV10:
case CODEC_ID_RV20:
case CODEC_ID_RV30:
case CODEC_ID_RV40:
{
guint32 fourcc;
gint format;
if (gst_structure_get_fourcc (str, "rmsubid", &fourcc))
context->sub_id = fourcc;
if (gst_structure_get_int (str, "format", &format))
context->sub_id = format;
@ -2438,6 +2444,9 @@ gst_ffmpeg_get_codecid_longname (enum CodecID codec_id)
case CODEC_ID_RV20:
name = "Realvideo 2.0";
break;
case CODEC_ID_RV30:
name = "Realvideo 3.0";
break;
case CODEC_ID_RV40:
name = "Realvideo 4.0";
break;

View file

@ -513,7 +513,9 @@ gst_ffmpegdec_open (GstFFMpegDec * ffmpegdec)
}
break;
case CODEC_ID_RV10:
case CODEC_ID_RV30:
case CODEC_ID_RV20:
case CODEC_ID_RV40:
ffmpegdec->is_realvideo = TRUE;
break;
default:
@ -1479,6 +1481,10 @@ beach:
drop_qos:
{
GST_WARNING_OBJECT (ffmpegdec, "Dropping frame because of QoS");
/* drop a frame, set discont on next buffer, pretend we decoded the complete
* buffer */
ffmpegdec->discont = TRUE;
len = size;
goto beach;
}
drop_non_keyframe: