[FFmpeg-devel] Typo in h264_parser.c ?

John Pilkington johnpilk222 at gmail.com
Fri Apr 27 02:33:11 EEST 2018

Hi: I haven't previously posted here.

I've been on the mythtv lists since 2005 and wrote a cutting script that 
I use daily on mpeg2video SD recordings from DVB-T; it cuts with 
Project-X, at keyframes.  I have been trying to write a similar script 
using ffmpeg to cut h264-encoded HD recordings from DVB-T2 transmissions 
in the UK. Internal cuts have not been good.

I'm using mythffmpeg version 3.4.1, as incorporated in current 
mythtv-master, in Fedora 26.  Results have been similar with ffmpeg 
3.3.7 for x86_64 f26 from rpmfusion.

I use a first pass to 'ignore_unknown' streams, and a second to do the 
cutting. During the second pass I have almost always had error reports 
of 'illegal reordering of pic_nums_idc' or 'reference count overflow.'

I reported that and the following details yesterday on the mythtv-devel 
list, and a re-post here has been suggested.

The error reports apparently come from libavcodec/h264_parser.c, lines 
186 and 194.  The numbers in the 'if/else if' combination at lines 
182/184 look very strange to me:

     unsigned int reordering_of_pic_nums_idc = get_ue_golomb_31(gb);

             if (reordering_of_pic_nums_idc < 3)
             else if (reordering_of_pic_nums_idc > 3) {....

..and libavcodec/golomb.h has this at line 82:

* read unsigned exp golomb code, constraint to a max of 31.
* the return value is undefined if the stored value exceeds 31.
static inline int get_ue_golomb_31(GetBitContext *gb)

***I think that the '3' in the 'else if' line in the parser should 
probably be 31. ***

I have patched my copy accordingly.  I have seen no bad effects, most of 
the error messages have gone, and the internal cuts are much neater.

It would be great if someone would look to see if this and/or other 
patches are appropriate.  IIUC mythtv won't patch the ffmpeg code that 
it uses.

I have more test results available if required.


John Pilkington

More information about the ffmpeg-devel mailing list