<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Message: 2<br>
Date: Thu, 12 Sep 2013 13:26:17 +0200<br>
From: Sebastian Dr?ge <<a href="mailto:slomo@circular-chaos.org">slomo@circular-chaos.org</a>><br>
To: Discussions about GStreamer on Android<br>
        <<a href="mailto:gstreamer-android@lists.freedesktop.org">gstreamer-android@lists.freedesktop.org</a>><br>
Subject: Re: Unable to autoplug video/x-h264 decoder<br>
Message-ID: <1378985177.13310.29.camel@thor.lan><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
On Do, 2013-09-12 at 18:17 +0800, Bruce Tsai wrote:<br>
> Hi all,<br>
><br>
><br>
> I modify Android Tutorial 5 to play mp4 files on Nexus 7 (2013 ver.).<br>
> Playing sintel_trailer-480p.mp4 and sintel_trailer-720p.mp4 is fine.<br>
> But playing sintel_trailer-1080p.mp4 shows blank screen.<br>
> It seems the video decoder is not available from dumped info.<br>
><br>
><br>
> From the log [1], it says No decoder available for type<br>
> 'video/x-h264, stream-format=(string)byte-stream,<br>
> alignment=(string)au, level=(string)5, profile=(string)high,<br>
> width=(int)1920, height=(int)1080, framerate=(fraction)24/1,<br>
> pixel-aspect-ratio=(fraction)1/1, parsed=(boolean)true'.<br>
><br>
><br>
> I also dumped caps info in sintel_trailer-480p.mp4 and compared these<br>
> two caps info.<br>
> The only differences are:<br>
> level: 5(1080p) vs. 3(480p)<br>
> width: 1920(1080p) vs 854(480p)<br>
> height: 1080(1080p) vs 480(480p)<br>
<br>
That happens because the level is different and your hardware claims to<br>
not support that level. It probably does, most of the time this<br>
information is just inaccurate. This commit should fix it, will be in<br>
versions 1.0.11 and 1.1.5.<br>
<br>
commit 2b94641a421f1aba8c451e718854402b404fe617<br>
Author: Sebastian Dr?ge <<a href="mailto:slomo@circular-chaos.org">slomo@circular-chaos.org</a>><br>
Date:   Thu Sep 12 13:21:37 2013 +0200<br>
<br>
    amcvideodec: Don't put the level restrictions on the sinkpad caps<br>
<br>
    They tend to be inaccurate and having them in the sinkpad caps<br>
    prevents playback of files that would otherwise play fine.<br>
<br><br></blockquote><div>Many thanks for this fix, this really helps me.</div><div> </div><div>BTW</div><div>Either in gst_amc_video_dec_handle_frame of gstamcvideodec.c or gst_amc_audio_dec_handle_frame of gstamcaudiodec.c, there are two checks of "if (self->downstream_flow_ret != GST_FLOW_OK)". (gstreamer-1.0-sdk)</div>

<div>Before the check, there is also a check of "if (self->flushing)".</div><div>Sometimes I got "self->downstream_flow_ret == GST_FLOW_FLUSHING" but "self->flushing == FALSE".</div>

<div>This seems incompatible and causes downstream error.</div><div>Now I reset "self->flushing = TRUE" if "self->downstream_flow_ret == GST_FLOW_FLUSHING" before above checks.</div><div>But do we really need use two flags to indicate the flushing state of buffer?</div>

<div>Or eliminate the flag "self->flushing" to avoid incompatibility?</div></div></div></div>