[FFmpeg-devel] [PATCH] Fix non-rounding up to next 16-bit aligned bug in IFF decoder

Sebastian Vater cdgs.basty
Wed Apr 28 14:23:07 CEST 2010


Sebastian Vater a ?crit :
> I have fixed the wrong IFF decoding issue in the IFF decoder.
>
> The reason is that the IFF docs say that each line in the BODY chunk has
> it's width rounded up to next 16-bit boundary, such that each new line
> begins on a word boundary (address divisible by 2).
>
> Please review and apply.
>
> I will do the heavy optimization stuff now based on this.
>
>   
Heavy optimization for decodeplane8 done. Patch attached.

Please note that I used a different IFF file for benchmarking this (one
which was displayed incorrectly before fix non-rounding on word boundary
patch applied).

This image also has a larger width and thus the decodeplane8 function is
called more often per line (should yield more accurate results).

Benchmarks for fix non-rounding on word boundary patch:
basty at cdgs-basty:~/src/ffmpeg/build$ ./ffplay ../patches/MRLake.iff
FFplay version git-svn-r22986, Copyright (c) 2003-2010 the FFmpeg developers
  built on Apr 28 2010 13:22:35 with gcc 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
  configuration:
  libavutil     50.14. 0 / 50.14. 0
  libavcodec    52.66. 0 / 52.66. 0
  libavformat   52.61. 0 / 52.61. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.10. 0 /  0.10. 0
[IFF @ 0x8b32790]Estimating duration from bitrate, this may be inaccurate
Input #0, IFF, from '../patches/MRLake.iff':
  Duration: N/A, bitrate: N/A
    Stream #0.0: Video: iff_byterun1, pal8, 737x595, PAR 17:20 DAR
737:700, 90k tbr, 90k tbn, 90k tbc
57150 dezicycles in decodeplane8, 1 runs, 0 skips
55335 dezicycles in decodeplane8, 2 runs, 0 skips
54387 dezicycles in decodeplane8, 4 runs, 0 skips
53866 dezicycles in decodeplane8, 8 runs, 0 skips
53598 dezicycles in decodeplane8, 16 runs, 0 skips
53414 dezicycles in decodeplane8, 32 runs, 0 skips
53297 dezicycles in decodeplane8, 64 runs, 0 skips
53249 dezicycles in decodeplane8, 127 runs, 1 skips
53216 dezicycles in decodeplane8, 255 runs, 1 skips
53201 dezicycles in decodeplane8, 511 runs, 1 skips
53194 dezicycles in decodeplane8, 1023 runs, 1 skips
53224 dezicycles in decodeplane8, 2046 runs, 2 skips
53429 dezicycles in decodeplane8, 4091 runs, 5 skipsB sq=    0B f=0/0
   0.51 A-V:  0.000 s:0.0 aq=    0KB vq=    0KB sq=    0B f=0/0   0/0

Benchmarks with heavy optimization based on fix non-rounding to word
boundary patch:
basty at cdgs-basty:~/src/ffmpeg/build$ ./ffplay ../patches/MRLake.iff
FFplay version git-svn-r22986, Copyright (c) 2003-2010 the FFmpeg developers
  built on Apr 28 2010 13:22:35 with gcc 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
  configuration:
  libavutil     50.14. 0 / 50.14. 0
  libavcodec    52.66. 0 / 52.66. 0
  libavformat   52.61. 0 / 52.61. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.10. 0 /  0.10. 0
[IFF @ 0x8b32790]Estimating duration from bitrate, this may be inaccurate
Input #0, IFF, from '../patches/MRLake.iff':
  Duration: N/A, bitrate: N/A
    Stream #0.0: Video: iff_byterun1, pal8, 737x595, PAR 17:20 DAR
737:700, 90k tbr, 90k tbn, 90k tbc
24900 dezicycles in decodeplane8, 1 runs, 0 skips
22215 dezicycles in decodeplane8, 2 runs, 0 skips
19937 dezicycles in decodeplane8, 4 runs, 0 skips
17513 dezicycles in decodeplane8, 8 runs, 0 skips
16066 dezicycles in decodeplane8, 16 runs, 0 skips
15322 dezicycles in decodeplane8, 32 runs, 0 skips
14925 dezicycles in decodeplane8, 64 runs, 0 skips
14719 dezicycles in decodeplane8, 128 runs, 0 skips
14596 dezicycles in decodeplane8, 256 runs, 0 skips
14543 dezicycles in decodeplane8, 512 runs, 0 skips
14516 dezicycles in decodeplane8, 1024 runs, 0 skips
14503 dezicycles in decodeplane8, 2046 runs, 2 skips
14492 dezicycles in decodeplane8, 4093 runs, 3 skips
   0.59 A-V:  0.000 s:0.0 aq=    0KB vq=    0KB sq=    0B f=0/0   0/0

-- 

Best regards,
                   :-) Basty/CDGS (-:

-------------- next part --------------
A non-text attachment was scrubbed...
Name: iff-decoder-fix-heavy-dp8.patch
Type: text/x-patch
Size: 1867 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100428/b8e2cef0/attachment.bin>



More information about the ffmpeg-devel mailing list