<div dir="ltr"><div>I checked with GST_DEBUG=*:5</div><div> </div><div>I am describing the scenario here.</div><div> </div><div>(1) My input H264 ES is a Annex B stream with 0001 as start code</div><div>(2) My pipeline is appsrc->h264parse->ffdec_h264->ffmpegcolorspace->videoscale->autovideosink</div>
<div> </div><div> </div><div>On appsrc, I am setting Caps as :</div><div> </div><div>     GstBuffer* buf = gst_buffer_new_and_alloc(extradatalen);<br>     memcpy(GST_BUFFER_DATA(buf), extradata, extradatalen);<br>     GstCaps* caps = gst_caps_new_simple ("video/x-h264", <br>
         "codec_data", GST_TYPE_BUFFER, buf, <br>         "stream-format", G_TYPE_STRING, "byte-stream", <br>         "width", G_TYPE_INT, <Width>, <br>         "height", G_TYPE_INT, <Height>,<br>
         "pixel-aspect-ratio", GST_TYPE_FRACTION, <PixelAspectRatioX>, <PixelAspectRatio>,<br>         "framerate", GST_TYPE_FRACTION, <RateValue>, <RateScale>,<br>         NULL);<br>
     gst_app_src_set_caps(appsrc, caps);<br>     gst_buffer_unref (buf);<br>     gst_caps_unref (caps);</div><div> </div><div> </div><div> </div><div>Now, when I run my application, for first data buffer of size 3529, I saw some logs like:</div>
<div> </div><div>0:00:09.618054032  5068  0xa2c8180 DEBUG      codecparsers_h264 gsth264parser.c:1255:gst_h264_parser_identify_nalu: Nal start 128, No end found<br>0:00:09.618081257  5068  0xa2c8180 DEBUG              h264parse gsth264parse.c:814:gst_h264_parse_check_valid_frame:<myparser> Looking for more<br>
0:00:09.618107783  5068  0xa2c8180 DEBUG      codecparsers_h264 gsth264parser.c:459:set_nalu_datas: Nal type 5, ref_idc 3<br>0:00:09.618135333  5068  0xa2c8180 DEBUG      codecparsers_h264 gsth264parser.c:1255:gst_h264_parser_identify_nalu: Nal start 128, No end found<br>
0:00:09.618154921  5068  0xa2c8180 DEBUG              h264parse gsth264parse.c:730:gst_h264_parse_check_valid_frame:<myparser> not a complete nal found at offset 128<br>0:00:09.618181156  5068  0xa2c8180 DEBUG              baseparse gstbaseparse.c:2382:gst_base_parse_chain:<myparser> not enough data available (only 3529 bytes)<br>
0:00:09.618217629  5068  0xa2c8180 DEBUG                basesrc gstbasesrc.c:2088:gst_base_src_update_length:<mysource> reading offset 3529, length 4096, size -1, segment.stop -1, maxsize -1<br>0:00:09.618240412  5068  0xa2c8180 DEBUG                basesrc gstbasesrc.c:2091:gst_base_src_update_length:<mysource> dynamic size: 0<br>
0:00:09.618321779  5068  0xa2c8180 DEBUG                basesrc gstbasesrc.c:2186:gst_base_src_get_range:<mysource> calling create offset 3529 length 4096, time 0<br></div><div> </div><div> </div><div>At byte 128, It h264parse says no end found......I think this is OK since it is a ANNEX B stream, and a ANNEX B buffer does not end with 0001.</div>
<div>So, are the above debug logs are valid OR their is some problem with the buffer?</div><div> </div><div> </div><div> </div><div> </div><div>Secondly...if i see the logs more down ....i see these logs</div><div> </div>
<div> </div><div>0:00:09.694247554  5068 0xa8869840 DEBUG                 appsrc gstappsrc.c:1486:gst_app_src_push_buffer_full:<mysource> queueing buffer 0xa2c7b10<br>0:00:09.706567378  5068  0xa2c8180 DEBUG                 ffmpeg gstffmpegdec.c:895:gst_ffmpegdec_setcaps:<mydecoder:sink> clipping to 320x240<br>
0:00:09.706609004  5068  0xa2c8180 DEBUG                 ffmpeg gstffmpegdec.c:904:gst_ffmpegdec_setcaps:<mydecoder:sink> final clipping to 320x240<br>0:00:09.706623991  5068  0xa2c8180 DEBUG               GST_CAPS gstpad.c:2741:gst_pad_set_caps:<mydecoder:sink> caps 0xa2c1ba0 video/x-h264, codec_data=(buffer)014d400dffe10025674d400dec80a0fd8750808080a000007d200017701c00002b160002b079351807c50a448001000568ebec6c80, stream-format=(string)avc, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)4/3, framerate=(fraction)10000000/417083, parsed=(boolean)true, alignment=(string)au<br>
0:00:09.706704675  5068  0xa2c8180 DEBUG                 ffmpeg gstffmpegdec.c:2549:gst_ffmpegdec_chain:<mydecoder> received DISCONT<br>0:00:09.706726301  5068  0xa2c8180 ERROR                 ffmpeg gstffmpegdec.c:2341:gst_ffmpegdec_frame:<mydecoder> no codec context<br>
0:00:09.707911411  5068  0xa2c8180 DEBUG                 ffmpeg gstffmpegdec.c:2566:gst_ffmpegdec_chain:<mydecoder> waiting for keyframe<br></div><div> </div><div> </div><div> </div><div>Above error shows no codec context. </div>
<div>I dont know why this codec context getting not created.</div><div> </div><div>I am pushing the data from the stream to appsrc as I get it, but still dont know how to get past this error.</div><div> </div><div>Any idea ???</div>
<div> </div><div> </div><div>On the other hand...if I dump the stream data in a file and play it with below pipeline, it works:</div><div> </div><div>gst-launch-0.10 filesrc location=file.264 ! h264parse ! ffdec_h264 ! ffmpegcolorspace ! videoscale ! autovideosink</div>
<div> </div><div> </div><div> </div><div>Dont know why decoder is failing in first case, and why its working in second case</div><div> </div><div>Thanks</div><div> </div><div> </div><div> </div><div> </div><div> </div><div>
 </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Aug 25, 2013 at 8:36 PM, Tim-Philipp Müller <span dir="ltr"><<a href="mailto:t.i.m@zen.co.uk" target="_blank">t.i.m@zen.co.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Fri, 2013-08-23 at 13:01 +0530, Deepak Jain wrote:<br>
<br>
> appsrc->h264parse->ffdec_h264->ffmpegcolorspace->videoscale->autovideosink<br>
><br>
> Now as I can see, video is properly pushed to appsrc, then to<br>
> h264parse but no data can be found after ffdec_h264 and nothing<br>
> happens<br>
><br>
><br>
> This I checked by putting filesink first after appsrc, then after<br>
> h264parse. Both times, I get the data properly<br>
><br>
> But when I put filesink after ffdec_h264, my file shows o bytes.<br>
><br>
> Any idea what I may be missing?<br>
<br>
</div>Maybe check the GST_DEBUG=*dec*:6,*ff*:6 debug log, to see if you spot<br>
anything suspicious. Maybe the decoder is waiting for a buffer marked as<br>
keyframe, but doesn't get one (and h264parse doesn't actually parse, but<br>
just passed data through). But that's all just a guess.<br>
<div class="HOEnZb"><div class="h5"><br>
 Cheers<br>
  -Tim<br>
<br>
<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br></div>