Merge "Fix issue 3457629 FIle loads but does not play"
diff --git a/libvideoeditor/vss/src/M4VD_EXTERNAL_BitstreamParser.c b/libvideoeditor/vss/src/M4VD_EXTERNAL_BitstreamParser.c
index bc75488..1d8c1cd 100755
--- a/libvideoeditor/vss/src/M4VD_EXTERNAL_BitstreamParser.c
+++ b/libvideoeditor/vss/src/M4VD_EXTERNAL_BitstreamParser.c
@@ -503,18 +503,21 @@
{
M4OSA_ERR err = M4NO_ERROR;
M4OSA_Bool NALSPS_and_Profile0Found = M4OSA_FALSE;
- M4OSA_UInt16 index;
- M4OSA_Bool constraintSet3;
+ M4OSA_UInt16 index = 28; /* the 29th byte is SPS start */
+ M4OSA_Bool constraintSet3;
+
+ if (DSISize <= index) {
+ M4OSA_TRACE1_0("M4DECODER_EXTERNAL_ParseAVCDSI: DSI is invalid");
+ *profile = M4DECODER_AVC_kProfile_and_Level_Out_Of_Range;
+ return M4ERR_PARAMETER;
+ }
/* check for baseline profile */
- for(index = 0; index < (DSISize-1); index++)
+ if(((pDSI[index] & 0x1f) == 0x07) && (pDSI[index+1] == 0x42))
{
- if(((pDSI[index] & 0x1f) == 0x07) && (pDSI[index+1] == 0x42))
- {
- NALSPS_and_Profile0Found = M4OSA_TRUE;
- break;
- }
+ NALSPS_and_Profile0Found = M4OSA_TRUE;
}
+
if(M4OSA_FALSE == NALSPS_and_Profile0Found)
{
M4OSA_TRACE1_1("M4DECODER_EXTERNAL_ParseAVCDSI: index bad = %d", index);