diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index d0592ad5f8..6e87efabe8 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -519,16 +519,19 @@ static int h264_split(AVCodecContext *avctx, int i; uint32_t state = -1; int has_sps = 0; + int has_pps = 0; for (i = 0; i <= buf_size; i++) { if ((state & 0xFFFFFF1F) == 0x107) has_sps = 1; + if ((state & 0xFFFFFF1F) == 0x108) + has_pps = 1; /* if ((state&0xFFFFFF1F) == 0x101 || * (state&0xFFFFFF1F) == 0x102 || * (state&0xFFFFFF1F) == 0x105) { * } */ - if ((state & 0xFFFFFF00) == 0x100 && (state & 0xFFFFFF1F) != 0x106 && + if ((state & 0xFFFFFF00) == 0x100 && ((state & 0xFFFFFF1F) != 0x106 || has_pps) && (state & 0xFFFFFF1F) != 0x107 && (state & 0xFFFFFF1F) != 0x108 && (state & 0xFFFFFF1F) != 0x109 && (state & 0xFFFFFF1F) != 0x10d && (state & 0xFFFFFF1F) != 0x10f) {