<div dir="ltr">So the keyframe cannot be fed to the decoder one nal at a time? Is that what you are suggesting?<div><br><div><br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 10, 2013 at 2:40 PM, Andy Shaules <span dir="ltr"><<a href="mailto:bowljoman@gmail.com" target="_blank">bowljoman@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>I always had to decode from the latest
key frame up to the desired stream time nal,<div><div class="h5"><br>
<br>
On 6/10/2013 2:36 PM, Faraz Khan wrote:<br>
</div></div></div>
<blockquote type="cite"><div><div class="h5">
<div dir="ltr">Hi all,
<div>I'm trying to use ffmpeg as a decoder for a real-time x264
stream that I'm generating. It works fine if I try to decode
entire frames, but if I try to decode a single NALU the
decoder errors out saying 'no frame'. I've tried using the
parser (av_parser_parse2) but the h264 decoder doesnt seem to
like that output either. I'm using x264 with annex-b and
repeat-headers on. </div>
<div><br>
</div>
<div>The encoder config is as follows:<br>
<br>
x264params.b_sliced_threads = 1;<br>
x264params.i_slice_max_size = 1350;<br>
x264params.i_width = yuvSize.width;<br>
x264params.i_height = yuvSize.height;<br>
x264params.i_fps_num = 10;<br>
x264params.i_fps_den = 1;<br>
x264params.b_vfr_input = 0;<br>
x264params.rc.i_bitrate = 1500;<br>
<br>
</div>
<div> // Intra refres:<br>
x264params.i_keyint_max = 50000000;<br>
x264params.b_intra_refresh = 1;<br>
<br>
</div>
<div>//Rate control:<br>
<br>
x264params.rc.i_rc_method = X264_RC_ABR;<br>
x264params.rc.i_vbv_buffer_size = 300;<br>
x264params.rc.i_vbv_max_bitrate = 1500;<br>
<br>
</div>
<div>//For streaming:<br>
x264params.b_repeat_headers = 1;<br>
x264params.b_annexb = 1;<br>
<br>
</div>
<div>x264_param_apply_profile(&x264params, "baseline");</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>I do the encode with:</div>
<div>
<p> <span>int</span> frame_size = <span>x264_encoder_encode</span>(<span>x264Encoder</span>,
&nals, &i_nals, &<span>pic_in</span>,
&<span>pic_out</span>);</p>
<p><br>
</p>
<p>Now, since the max slice size is 1350, each packet
output is a udp packet of size < MTU (this is true) and
sent across the network.<br>
</p>
<p>I iterate over the nals[i].p_payload and
send them over to the ffmpeg side for decoding. I receive
the correct packet on the remote side. </p>
<p>If I assemble ALL the NALUs that were
output in this frame and feed it directly to the decoder
(even without the parser), it works fine! If I feed one NALU
at a time, it fails (event with the parse). I'm sending it
to the parser like:<br>
</p>
<p><br>
</p>
<p>int plen = av_parser_parse2(codecParser,
decoderContext, &outbuf, &outside,
indata,inlength,0,0,0);</p>
<p><br>
</p>
<p>plen always reports that it consumed the
entire NALU that I gave it - after consuming a few NALUs,
the outsize and outbuf are set to some value. Feeding it
into the decoder using:</p>
<p><br>
</p>
<p> int len =
avcodec_decode_video2(decoderContext,decoderOutframe,
&gotpic,&avpkt);</p>
<p><br>
</p>
<p>Results in it saying 'No frame'. Again,
if avpkt.data contains the entire frame (all NALUs
concatenated) it will work! </p>
<p><br>
</p>
<p>I'm obviously doing some obviously wrong
- but I really cant figure out why it wont decode a single
NALU. Or is this a limitation in ffmpeg?</p>
<p><br>
</p>
<p>
Thanks Guys!</p>
<p><br>
</p>
<p><br>
</p>
</div>
<div>
<div dir="ltr"><br>
<div>--</div>
<div>Faraz Khan</div>
<div>Simple Collaboration Screensharing</div>
<div><a href="http://www.screenhero.com" target="_blank">www.screenhero.com</a></div>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
</div></div><pre>_______________________________________________
Libav-user mailing list
<a href="mailto:Libav-user@ffmpeg.org" target="_blank">Libav-user@ffmpeg.org</a>
<a href="http://ffmpeg.org/mailman/listinfo/libav-user" target="_blank">http://ffmpeg.org/mailman/listinfo/libav-user</a>
</pre>
</blockquote>
<br>
</div>
<br>_______________________________________________<br>
Libav-user mailing list<br>
<a href="mailto:Libav-user@ffmpeg.org">Libav-user@ffmpeg.org</a><br>
<a href="http://ffmpeg.org/mailman/listinfo/libav-user" target="_blank">http://ffmpeg.org/mailman/listinfo/libav-user</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><br><div>--</div><div>Faraz Khan</div><div>Simple Collaboration Screensharing</div><div><a href="http://www.screenhero.com" target="_blank">www.screenhero.com</a></div>
</div>
</div>