[bitstreamconverter] fixed return correct extradata/size and allow 3byte NAL sizes
authorgimli <ebsi4711@gmail.com>
Fri, 30 Nov 2012 10:54:20 +0000 (11:54 +0100)
committergimli <ebsi4711@gmail.com>
Fri, 30 Nov 2012 10:54:20 +0000 (11:54 +0100)
xbmc/utils/BitstreamConverter.cpp

index 0bd407f..622c9eb 100644 (file)
@@ -460,7 +460,8 @@ bool CBitstreamConverter::Open(enum CodecID codec, uint8_t *in_extradata, int in
         // valid avcC atom data always starts with the value 1 (version)
         if ( *in_extradata != 1 )
         {
-          if (in_extradata[0] == 0 && in_extradata[1] == 0 && in_extradata[2] == 0 && in_extradata[3] == 1)
+          if ( (in_extradata[0] == 0 && in_extradata[1] == 0 && in_extradata[2] == 0 && in_extradata[3] == 1) ||
+               (in_extradata[0] == 0 && in_extradata[1] == 0 && in_extradata[2] == 1) )
           {
             CLog::Log(LOGINFO, "CBitstreamConverter::Open annexb to bitstream init\n");
             // video content is from x264 or from bytestream h264 (AnnexB format)
@@ -701,11 +702,17 @@ int CBitstreamConverter::GetConvertSize()
 
 uint8_t *CBitstreamConverter::GetExtraData()
 {
-  return m_extradata;
+  if(m_convert_bitstream)
+    return m_sps_pps_context.sps_pps_data;
+  else
+    return m_extradata;
 }
 int CBitstreamConverter::GetExtraSize()
 {
-  return m_extrasize;
+  if(m_convert_bitstream)
+    return m_sps_pps_context.size;
+  else
+    return m_extrasize;
 }
 
 bool CBitstreamConverter::BitstreamConvertInit(void *in_extradata, int in_extrasize)