From 62ac493c5cebb6bc43be3983ff48d6b66c4eb319 Mon Sep 17 00:00:00 2001 From: Lin YANG Date: Mon, 17 Aug 2009 17:53:11 +0800 Subject: [PATCH] h264parse: decode SEI --- gst/h264parse/gsth264parse.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) 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); -- 2.7.4