From: Lin YANG Date: Mon, 17 Aug 2009 09:53:11 +0000 (+0800) Subject: h264parse: decode SEI X-Git-Tag: 1.19.3~507^2~18234 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=62ac493c5cebb6bc43be3983ff48d6b66c4eb319;p=platform%2Fupstream%2Fgstreamer.git h264parse: decode SEI --- diff --git a/gst/h264parse/gsth264parse.c b/gst/h264parse/gsth264parse.c index 8b9b8b9..502602a 100644 --- a/gst/h264parse/gsth264parse.c +++ b/gst/h264parse/gsth264parse.c @@ -680,6 +680,45 @@ gst_sei_decode_picture_timing (GstH264Parse * h, GstNalBs * bs) return 0; } +/* decode supplimental enhancement information */ +static gboolean +gst_nal_decode_sei (GstH264Parse * h, GstNalBs * bs) +{ + guint8 tmp; + GstSeiPayloadType payloadType = 0; + gint8 payloadSize = 0; + + do { + tmp = gst_nal_bs_read (bs, 8); + payloadType += tmp; + } while (tmp == 255); + do { + tmp = gst_nal_bs_read (bs, 8); + payloadSize += tmp; + } while (tmp == 255); + GST_DEBUG_OBJECT (h, + "SEI message received: payloadType = %d, payloadSize = %d bytes", + payloadType, payloadSize); + + switch (payloadType) { + case SEI_BUF_PERIOD: + if (!gst_sei_decode_buffering_period (h, bs)) + return FALSE; + break; + case SEI_PIC_TIMING: + /* TODO: According to H264 D2.2 Note1, it might be the case that the + * picture timing SEI message is encountered before the corresponding SPS + * is specified. Need to hold down the message and decode it later. */ + if (!gst_sei_decode_picture_timing (h, bs)) + return FALSE; + break; + default: + GST_DEBUG_OBJECT (h, "SEI message of payloadType = %d is recieved but not" + " parsed", payloadType); + } + + return TRUE; +} GST_BOILERPLATE (GstH264Parse, gst_h264_parse, GstElement, GST_TYPE_ELEMENT);