[FFmpeg-trac] #3900(avformat:new): ff_check_h264_startcode does not support 3-byte startcodes

FFmpeg trac at avcodec.org
Thu Aug 28 13:29:25 CEST 2014


#3900: ff_check_h264_startcode does not support 3-byte startcodes
----------------------------------+------------------------------------
             Reporter:  Lastique  |                    Owner:
                 Type:  defect    |                   Status:  new
             Priority:  normal    |                Component:  avformat
              Version:  2.3       |               Resolution:
             Keywords:            |               Blocked By:
             Blocking:            |  Reproduced by developer:  0
Analyzed by developer:  0         |
----------------------------------+------------------------------------

Comment (by Lastique):

 Replying to [comment:3 cehoyos]:
 > Replying to [ticket:3900 Lastique]:
 > > The 3-byte startcode is produced by libx264 for SEI NAL. Our
 application uses libx264 and ffmpeg through C API and at some point passes
 an AVPacket that starts with SEI to av_interleaved_write_frame, which
 fails.
 >
 > This seems to describe a different failure than the one for which you
 uploaded a sample and provided a command line. Is the issue with using
 libx264 to encode and libavformat to mux not reproducible with
 {{{ffmpeg}}} (the application)?

 I don't use ffmpeg application in my case, so I can't tell. The test case
 I described simply illustrates the issue I'm having when using ffmpeg
 through C API. If you inspect the sample file you will notice that its
 first frame starts with a 3-byte startcode and a SEI NAL. I could create a
 C program to produce the same error, it's just more time consuming.

 > I tested your patch and the file you uploaded: The patch allows to write
 invalid transport streams with {{{ffmpeg -i ticket3900.avi​ -vcodec copy
 out.ts}}} which could be fixed by moving the changed function to
 libavformat/avienc.c but neither the original file nor the (with your
 patch) remuxed avi file play with WMP, so I suspect the error message is
 not wrong or do I miss something?

 As far as I understand, the 3-byte startcode is valid in h264 (see ITU-T
 H.264, Annex B; there is also a shorter description here:
 http://www.szatmary.org/blog/25), so ffmpeg should recognize and support
 it. This is not specific to avi or any other container since this is about
 the NAL bitstream format. If WMP doesn't support the 3-byte startcode then
 WMP is buggy. That said, it may be that WMP doesn't support the particular
 combination of the codec, bitstream parameters and container. I'm not
 really concerned with WMP.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/3900#comment:4>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list