Our use case is demuxer only output key frame when backward playback. Every frame is DISCONT and KEY frame. mpeg4videoparse will detect coding type when detect start code after VOP. Our use case will drain after VOP and can't detect start code after VOP. Add check coding type code when drain.
Signed-off-by: Yuqing Zhu <b54...@freescale.com> --- ...arse-Need-detect-picture-coding-type-when.patch | 47 ++++++++++++++++++++++ .../gstreamer/gstreamer1.0-plugins-bad_1.6.2.bb | 1 + 2 files changed, 48 insertions(+) create mode 100755 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-mpeg4videoparse-Need-detect-picture-coding-type-when.patch diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-mpeg4videoparse-Need-detect-picture-coding-type-when.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-mpeg4videoparse-Need-detect-picture-coding-type-when.patch new file mode 100755 index 0000000..3f09d4d --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-mpeg4videoparse-Need-detect-picture-coding-type-when.patch @@ -0,0 +1,47 @@ +From f712092e768347b59719f5016714c91d4d82483b Mon Sep 17 00:00:00 2001 +From: Song Bing <b06...@freescale.com> +Date: Wed, 20 May 2015 15:13:20 +0800 +Subject: [PATCH 03/10] mpeg4videoparse: Need detect picture coding type when + drain +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +our use case is demuxer only output key frame when backward playback. +every frame is DISCONT and KEY frame. mpeg4videoparse will detect coding +type when detect start code after VOP. our use case will drain after VOP +and can't detect start code after VOP. Add check coding type code when +drain. + +Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=749617] + +--- + gst/videoparsers/gstmpeg4videoparse.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/gst/videoparsers/gstmpeg4videoparse.c b/gst/videoparsers/gstmpeg4videoparse.c +index 53db2d5..dbbd6d2 100644 +--- a/gst/videoparsers/gstmpeg4videoparse.c ++++ b/gst/videoparsers/gstmpeg4videoparse.c +@@ -502,6 +502,18 @@ next: + case (GST_MPEG4_PARSER_ERROR): + /* if draining, take all */ + if (GST_BASE_PARSE_DRAINING (parse)) { ++ /* need decide intra_frame */ ++ if (mp4vparse->vop_offset >= 0) { ++ if (G_LIKELY (size > mp4vparse->vop_offset + 1)) { ++ mp4vparse->intra_frame = ++ ((data[mp4vparse->vop_offset + 1] >> 6 & 0x3) == 0); ++ } else { ++ GST_WARNING_OBJECT (mp4vparse, "no data following VOP startcode"); ++ mp4vparse->intra_frame = FALSE; ++ } ++ GST_LOG_OBJECT (mp4vparse, "is intra %d %d", ++ mp4vparse->intra_frame, mp4vparse->vop_offset); ++ } + framesize = size; + ret = TRUE; + } else { +-- +1.9.1 + diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.2.bb index 3f30f86..507d048 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.2.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.2.bb @@ -7,6 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \ SRC_URI += "file://0001-glimagesink-Downrank-to-marginal.patch \ file://0002-mpegtsmux-Need-get-pid-when-create-streams.patch \ + file://0003-mpeg4videoparse-Need-detect-picture-coding-type-when.patch \ " SRC_URI[md5sum] = "7c73bec1d389f0e184ebbbbb9e9f883d" -- 1.9.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core