mpeg4videoparse: accept VideoObjectLayer as start of frame and config

... which it deserves as much as VideoObject.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=667564
This commit is contained in:
Mark Nauwelaerts 2013-11-23 11:23:35 +01:00
parent 1698d3254d
commit fac0f1f668

View file

@ -379,10 +379,15 @@ gst_mpeg4vparse_process_sc (GstMpeg4VParse * mp4vparse, GstMpeg4Packet * packet,
GST_LOG_OBJECT (mp4vparse, "Video Object Layer"); GST_LOG_OBJECT (mp4vparse, "Video Object Layer");
/* wee keep track of the offset to parse later on */ /* we keep track of the offset to parse later on */
if (mp4vparse->vol_offset < 0) if (mp4vparse->vol_offset < 0)
mp4vparse->vol_offset = packet->offset; mp4vparse->vol_offset = packet->offset;
/* Video Object below is merely a start code,
* if that is considered as config, then certainly Video Object Layer
* which really contains some needed data */
mp4vparse->config_found = TRUE;
/* VO (video object) cases */ /* VO (video object) cases */
} else if (packet->type <= GST_MPEG4_VIDEO_OBJ_LAST) { } else if (packet->type <= GST_MPEG4_VIDEO_OBJ_LAST) {
GST_LOG_OBJECT (mp4vparse, "Video object"); GST_LOG_OBJECT (mp4vparse, "Video object");
@ -458,8 +463,11 @@ retry:
default: default:
if (packet.type <= GST_MPEG4_VIDEO_OBJ_LAST) if (packet.type <= GST_MPEG4_VIDEO_OBJ_LAST)
break; break;
if (packet.type >= GST_MPEG4_VIDEO_LAYER_FIRST &&
packet.type <= GST_MPEG4_VIDEO_LAYER_LAST)
break;
/* undesirable sc */ /* undesirable sc */
GST_LOG_OBJECT (mp4vparse, "start code is no VOS, VO, VOP or GOP"); GST_LOG_OBJECT (mp4vparse, "start code is no VOS, VO, VOL, VOP or GOP");
goto retry; goto retry;
} }