[Libav-user] Decoding single NALUs from x264 programmatically (no luck even with parser), works fine with concatenated NALUs

Sergey Fedorov night.rain.whisper at gmail.com
Sun Jul 7 09:13:13 CEST 2013


Did you try using CODEC_FLAG2_CHUNKS?


2013/7/6 Attila Sukosd <attila.sukosd at gmail.com>

> Hi guys,
>
> There was this thread about decoding NALUs one-by-one with parser2/decode2
> and I'm having exactly the same issue.
>
> I have x264 creating a bunch of NALUs, in annex_b and repeate_headers, and
> trying to decode them one by one on the client side. When I concatenate all
> the NALUs per frame into one large packet, and feed that directly into
> avcodec_decode_video2, everything is fine, the decode is successful.
> However, when I try to feed single NALs directly to avcodec_decode_video2,
> it spits out a bunch of errors. After searching for a while on the net, I
> read some place that certain types of NALs affect the rest of the data
> stream, and they need to be group together.
> I've tried to run the NALs through av_parser_parse2 and tried to decode
> the output buffer when the output size was larger than zero, however, after
> looking at the output buffer contents, it seems like while the output size
> seems reasonable (around the size of the NALs or a combination of a number
> of previous NALs), the output buffer content contains 3-4 bytes, and the
> rest is zero.
>
> The decoding looks like this:
>
>  ret = av_parser_parse2(decoder->pParserCtx, decoder->pCodecCtx,
> decoder->tmp_data, &outsize, buff, size, 0, 0, AV_NOPTS_VALUE);
>  printf("%p buff, %p outdata, consumed %d, %d bufsize, %d outsize\n",
> buff, decoder->tmp_data,ret, size, outsize);
>  disp_buff(decoder->tmp_data, 50);
>
>  if (outsize <= 0) return 0;
>
>  decoder->avpkt.flags = AV_PKT_FLAG_KEY;
>  decoder->avpkt.data = decoder->tmp_data;
>  decoder->avpkt.size = outsize;
>
>   got_picture = 0;
>   if ((ret = avcodec_decode_video2(decoder->pCodecCtx, decoder->pFrame,
> &got_picture, &decoder->avpkt)) < 0) {
>                 LOGE(__FUNCTION__, "H264 decoding failed!\n");
>                 return -1;
>   }
>
>
> Could someone shed some light on if I'm really off the right track? or am
> I just missing something very trivial?
>
>
> Best Regards,
>
> Attila
>
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20130707/eefd1e35/attachment.html>


More information about the Libav-user mailing list