[BZ1652]: H263 video couldn't seek
root cause: the bug is caused by a special clips that uses P frame as key frame.
solution: All of the macroblocks of the key-P frame is intra coded and hence though it is marked as inter
frame, it could be independently decoded.
Remove the reference frame check for P frame within MIX so that the key frame could pass decoding process
when seeking.
Change-Id: I3a007732779433de83ba207f3a1ca9baf53532b8
Signed-off-by: Shuo Liu <shuo.liu@intel.com>
diff --git a/mix_video/src/mixvideoformat_mp42.cpp b/mix_video/src/mixvideoformat_mp42.cpp
index 755501a..b3b6e25 100644
--- a/mix_video/src/mixvideoformat_mp42.cpp
+++ b/mix_video/src/mixvideoformat_mp42.cpp
@@ -710,10 +710,16 @@
return MIX_RESULT_DROPFRAME;
}
} else if (frame_type == MP4_VOP_TYPE_P || frame_type == MP4_VOP_TYPE_S) {
+#if 0
+ /*
+ * For special clips using P frame (special P frame with all MB intra coded) as key frame
+ * Need to skip the reference check to enable the seek
+ */
if (this->reference_frames[0] == NULL) {
LOG_W("Reference frames for P/S frame is missing\n");
return MIX_RESULT_DROPFRAME;
}
+#endif
}
// all sanity check passes, continue decoding through mix_videofmt_mp42_decode_continue
ret = _decode_continue(data);