I haven't seen any files with sym!=0, just thought I'd solve the general case. I'll change only for sym==0. Can always be changed later if any such samples are found.
Στις Σάβ, 10 Αυγ 2019 στις 4:11 μ.μ., ο/η Michael Niedermayer <mich...@niedermayer.cc> έγραψε: > > On Fri, Aug 09, 2019 at 07:29:50PM +0300, Nick Renieris wrote: > > From: Nick Renieris <velocit...@gmail.com> > > > > Some JPEGs [1] have incorrect DHT entries that map 2 codes to > > the same value. > > > > The second (last) mapping does not ever actually appear in the > > code stream, therefore ignoring any mappings after the first one > > fixes this. > > > > Without this, an "mjpeg_decode_dc: bad vlc: 0:0" error is thrown. > > > > --- > > > > [1]: Embedded JPEGs in "X7 RAW" and "X7 CinemaDNG" samples here: > > https://www.dji.com/gr/zenmuse-x7/info#downloads > > > > Signed-off-by: Nick Renieris <velocit...@gmail.com> > > --- > > libavcodec/jpegtables.c | 19 ++++++++++++++++--- > > 1 file changed, 16 insertions(+), 3 deletions(-) > > > > diff --git a/libavcodec/jpegtables.c b/libavcodec/jpegtables.c > > index cbe5523cb4..6f596cfc92 100644 > > --- a/libavcodec/jpegtables.c > > +++ b/libavcodec/jpegtables.c > > @@ -130,14 +130,27 @@ void ff_mjpeg_build_huffman_codes(uint8_t *huff_size, > > uint16_t *huff_code, > > { > > int i, j, k,nb, code, sym; > > > > - code = 0; > > + /* Zero-initialize huff_size (needed for multiple mappings check > > below) */ > > + k = 0; > > + for(i=1;i<=16;i++) { > > + nb = bits_table[i]; > > + for(j=0;j<nb;j++) { > > + sym = val_table[k++]; > > + huff_size[sym] = 0; > > + } > > + } > > + > > k = 0; > > + code = 0; > > for(i=1;i<=16;i++) { > > nb = bits_table[i]; > > for(j=0;j<nb;j++) { > > sym = val_table[k++]; > > - huff_size[sym] = i; > > - huff_code[sym] = code; > > + /* If there are multiple mappings to the same sym (bad files), > > keep the first code */ > > + if (huff_size[sym] == 0) { > > + huff_size[sym] = i; > > + huff_code[sym] = code; > > + } > > do these occur with sym different from 0 ? > if its just 0 then this can be simplified alot > > [...] > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > I do not agree with what you have to say, but I'll defend to the death your > right to say it. -- Voltaire > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".