mpegvideoparse: support field encoding for interlaced video

https://bugzilla.gnome.org/show_bug.cgi?id=705144
This commit is contained in:
Matej Knopp 2013-07-30 15:17:23 +02:00 committed by Sebastian Dröge
parent f604bc4964
commit e5ebd7d846

View file

@ -540,6 +540,21 @@ gst_mpegv_parse_process_sc (GstMpegvParse * mpvparse,
else
GST_LOG_OBJECT (mpvparse, "Couldn't parse picture at offset %d",
mpvparse->pic_offset);
/* if terminating packet is a picture, we need to check if it has same TSN as the picture that is being
terminated. If it does, we need to keep those together, as these packets are two fields of the same
frame */
if (packet->type == GST_MPEG_VIDEO_PACKET_PICTURE) {
if (info->size - off < 2) { /* we need at least two bytes to read the TSN */
ret = FALSE;
} else {
/* TSN is stored in first 10 bits */
int tsn = info->data[off] << 2 | (info->data[off + 1] & 0xC0) >> 6;
if (tsn == mpvparse->pichdr.tsn) /* prevent termination if TSN is same */
ret = FALSE;
}
}
}
return ret;