Hello again! Well, the parser didn't work so far. But I still have a question:
When I deliver let's say four slices of a non-idr-frame to the decoder: what about the startcodes? - Prepending 0x000001 to the whole package? -> (0x000001 + SSSS) - Prepending 0x000001 to each Slice, but concantenate those four slices and send them to decoder? -> 0x000001 S + 0x000001 S +0x000001 S +0x000001 S Cheers Sven 2010/9/21 Sven Wasmer <[email protected]>: > Hey Alex and Huy, > > As I coded last night a lot, but still got no nice pictures from my > stream I searched in the ffmpeg documentation and I have found an > interesting part in ffmpeg: > > av_parser_parse2() -> > http://cekirdek.pardus.org.tr/~ismail/ffmpeg-docs/avcodec_8h.html#691ca0258e91f99297e7726f56d8c247 > > There is also a little example how to use it and some description, > which is a rare case in ffmpeg-documentation ;-) > > I think it's ment to be there, just for what we are trying. Maybe you > use it already and I didn't know. But for h264 it should parse the > incoming buffer and let us get complete frames into an outputbuffer, > which could be sent to the decoding process. > I have read in an older post about it, that you should send the h264 > bitstream through the parser before decoding it. > > The av_parser_parse2() - call will send some information to the > AVCodecContext which is important to decode H264. > > related stuff: > av_parser_parse2() -> > AVCodecParserContext -> > http://cekirdek.pardus.org.tr/~ismail/ffmpeg-docs/structAVCodecParserContext.html > AVCodecParser -> > http://cekirdek.pardus.org.tr/~ismail/ffmpeg-docs/structAVCodecParser.html > AVCodecContext > > I'm just trying to implement this. On success I post the code here! > > If you already knrew this, have you tried out? I think, I can't be > totally wrong. > > cheers > sven > > 2010/9/20 Sven Wasmer <[email protected]>: >> Hi Huy, >> >> thanks for the example picture and the link to the viewer. It's very >> clear to me now. I used the "JM reference encoder" from Heinrich Hertz >> Institut (http://iphome.hhi.de/suehring/tml/), but I used a >> preconfigured flag (I forgot to deactivate it), which generates >> multiple PPS and with your mentioned viewer I can see a structure of >> SPS, PPS, PPS, PPS, IDR (only 1 slice!). Thus 3 different PPS with >> different IDs in a row, that MIGHT confuse ffmpeg, if it expects the >> IDR right after the first PPS, but I'm not sure about that. I reencode >> and go on with your suggested method ([785] ...) >> >> cheers >> Sven >> >> 2010/9/20 Huy Tran <[email protected]>: >>> Hi Alex and Sven, >>> >>> I sent to you an image about the H.264 AnnexB payload format (file format). >>> >>> >>> http://img13.imageshack.us/img13/7995/h264d.jpg >>> >>> I create this bitstream by using x264: * x264.exe --slices 4 -o output.264 >>> input.yuv 1920x1080* >>> My bitstream has 5 frames and each frame has 4 slices. Thus I have total 20 >>> slices. >>> I use "H.264 Video ES Viewer" to check the length, starcode, nal_unit_type >>> and so on. >>> >>> To decode this bitstream in FFmpeg, you have to collect 4 slices data of a >>> whole frame before passing it to avcodec_decode_video. >>> You also have to calculate exactly the length of each slices, FFmpeg need it >>> to decode H.264. >>> >>> Hope it helps. >>> Huy. >>> _______________________________________________ >>> libav-user mailing list >>> [email protected] >>> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >>> >> > _______________________________________________ libav-user mailing list [email protected] https://lists.mplayerhq.hu/mailman/listinfo/libav-user
