Commit d7826b58 authored by Michael Niedermayer's avatar Michael Niedermayer

make wmv1 and wmv2 playable with M$ DMO decoder

Originally committed as revision 9950 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent a3be5e58
...@@ -883,7 +883,7 @@ void ff_msmpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n) ...@@ -883,7 +883,7 @@ void ff_msmpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n)
} else { } else {
rl = &rl_table[3 + s->rl_chroma_table_index]; rl = &rl_table[3 + s->rl_chroma_table_index];
} }
run_diff = s->msmpeg4_version>=6; run_diff = s->msmpeg4_version>=4;
scantable= s->intra_scantable.permutated; scantable= s->intra_scantable.permutated;
} else { } else {
i = 0; i = 0;
...@@ -942,6 +942,9 @@ else ...@@ -942,6 +942,9 @@ else
run1 = run - rl->max_run[last][level] - run_diff; run1 = run - rl->max_run[last][level] - run_diff;
if (run1 < 0) if (run1 < 0)
goto esc3; goto esc3;
code = get_rl_index(rl, last, run1+1, level);
if (s->msmpeg4_version == 4 && code == rl->n)
goto esc3;
code = get_rl_index(rl, last, run1, level); code = get_rl_index(rl, last, run1, level);
if (code == rl->n) { if (code == rl->n) {
esc3: esc3:
...@@ -1641,7 +1644,7 @@ static inline int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block, ...@@ -1641,7 +1644,7 @@ static inline int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block,
} }
block[0] = level; block[0] = level;
run_diff = 0; run_diff = s->msmpeg4_version >= 4;
i = 0; i = 0;
if (!coded) { if (!coded) {
goto not_coded; goto not_coded;
......
...@@ -39,12 +39,12 @@ f546e8d0ada1917bc470584477f83e0e *./tests/data/a-msmpeg4.avi ...@@ -39,12 +39,12 @@ f546e8d0ada1917bc470584477f83e0e *./tests/data/a-msmpeg4.avi
639406 ./tests/data/a-msmpeg4.avi 639406 ./tests/data/a-msmpeg4.avi
8692a2e9ddb8081c4f00cb1557e2388e *./tests/data/out.yuv 8692a2e9ddb8081c4f00cb1557e2388e *./tests/data/out.yuv
stddev: 8.00 PSNR:30.05 bytes:7602176 stddev: 8.00 PSNR:30.05 bytes:7602176
44c11ce4aa20af1aa609f68e544e5479 *./tests/data/a-wmv1.avi 3c119e9ee8c8f45d36a0e8f976505f6b *./tests/data/a-wmv1.avi
641448 ./tests/data/a-wmv1.avi 641178 ./tests/data/a-wmv1.avi
69454f78ca636e83a600834e5a90660e *./tests/data/out.yuv 69454f78ca636e83a600834e5a90660e *./tests/data/out.yuv
stddev: 8.01 PSNR:30.04 bytes:7602176 stddev: 8.01 PSNR:30.04 bytes:7602176
f524505cf92daef42882d688ed6eadc7 *./tests/data/a-wmv2.avi d69fe03a838479a0a52da0765d49d42e *./tests/data/a-wmv2.avi
675342 ./tests/data/a-wmv2.avi 675138 ./tests/data/a-wmv2.avi
69454f78ca636e83a600834e5a90660e *./tests/data/out.yuv 69454f78ca636e83a600834e5a90660e *./tests/data/out.yuv
stddev: 8.01 PSNR:30.04 bytes:7602176 stddev: 8.01 PSNR:30.04 bytes:7602176
12d215719748b4cf1adeaca4e519ba6c *./tests/data/a-h261.avi 12d215719748b4cf1adeaca4e519ba6c *./tests/data/a-h261.avi
......
...@@ -39,12 +39,12 @@ stddev: 5.33 PSNR:33.58 bytes:7602176 ...@@ -39,12 +39,12 @@ stddev: 5.33 PSNR:33.58 bytes:7602176
127680 ./tests/data/a-msmpeg4.avi 127680 ./tests/data/a-msmpeg4.avi
0e1c6e25c71c6a8fa8e506e3d97ca4c9 *./tests/data/out.yuv 0e1c6e25c71c6a8fa8e506e3d97ca4c9 *./tests/data/out.yuv
stddev: 5.33 PSNR:33.58 bytes:7602176 stddev: 5.33 PSNR:33.58 bytes:7602176
6896c9bdf765953d272c25e34795b934 *./tests/data/a-wmv1.avi 1011e26e7d351c96d7bbfe106d831b69 *./tests/data/a-wmv1.avi
129548 ./tests/data/a-wmv1.avi 129530 ./tests/data/a-wmv1.avi
81eee429b665254d19a06607463c0b5e *./tests/data/out.yuv 81eee429b665254d19a06607463c0b5e *./tests/data/out.yuv
stddev: 5.33 PSNR:33.59 bytes:7602176 stddev: 5.33 PSNR:33.59 bytes:7602176
087ed5da0e7963f7c0a81f15362861a2 *./tests/data/a-wmv2.avi 1f6598e9776ed00aebdc44cc8d48cb7c *./tests/data/a-wmv2.avi
129864 ./tests/data/a-wmv2.avi 129860 ./tests/data/a-wmv2.avi
81eee429b665254d19a06607463c0b5e *./tests/data/out.yuv 81eee429b665254d19a06607463c0b5e *./tests/data/out.yuv
stddev: 5.33 PSNR:33.59 bytes:7602176 stddev: 5.33 PSNR:33.59 bytes:7602176
dfd005d4c9030a0dc889c828a6408b9c *./tests/data/a-h261.avi dfd005d4c9030a0dc889c828a6408b9c *./tests/data/a-h261.avi
......
...@@ -2300,99 +2300,99 @@ ret: 0 st:-1 ts:-0.645825 flags:1 ...@@ -2300,99 +2300,99 @@ ret: 0 st:-1 ts:-0.645825 flags:1
ret: 0 st: 0 dts:3.100000 pts:3.100000 pos:444 size:743 flags:1 ret: 0 st: 0 dts:3.100000 pts:3.100000 pos:444 size:743 flags:1
---------------- ----------------
tests/data/a-wmv1.avi tests/data/a-wmv1.avi
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8995 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8990 flags:1
ret: 0 st:-1 ts:-1.000000 flags:0 ret: 0 st:-1 ts:-1.000000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8995 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8990 flags:1
ret: 0 st:-1 ts:1.894167 flags:1 ret: 0 st:-1 ts:1.894167 flags:1
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83764 size:11102 flags:1 ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83754 size:11099 flags:1
ret: 0 st: 0 ts:0.800000 flags:0 ret: 0 st: 0 ts:0.800000 flags:0
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54778 size:9934 flags:1 ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54770 size:9931 flags:1
ret:-1 st: 0 ts:-0.320000 flags:1 ret:-1 st: 0 ts:-0.320000 flags:1
ret:-1 st:-1 ts:2.576668 flags:0 ret:-1 st:-1 ts:2.576668 flags:0
ret: 0 st:-1 ts:1.470835 flags:1 ret: 0 st:-1 ts:1.470835 flags:1
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83764 size:11102 flags:1 ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83754 size:11099 flags:1
ret: 0 st: 0 ts:0.360000 flags:0 ret: 0 st: 0 ts:0.360000 flags:0
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29812 size:8798 flags:1 ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29806 size:8796 flags:1
ret:-1 st: 0 ts:-0.760000 flags:1 ret:-1 st: 0 ts:-0.760000 flags:1
ret:-1 st:-1 ts:2.153336 flags:0 ret:-1 st:-1 ts:2.153336 flags:0
ret: 0 st:-1 ts:1.047503 flags:1 ret: 0 st:-1 ts:1.047503 flags:1
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54778 size:9934 flags:1 ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54770 size:9931 flags:1
ret: 0 st: 0 ts:-0.040000 flags:0 ret: 0 st: 0 ts:-0.040000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8995 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8990 flags:1
ret: 0 st: 0 ts:2.840000 flags:1 ret: 0 st: 0 ts:2.840000 flags:1
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:115836 size:11493 flags:1 ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:115824 size:11487 flags:1
ret: 0 st:-1 ts:1.730004 flags:0 ret: 0 st:-1 ts:1.730004 flags:0
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:115836 size:11493 flags:1 ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:115824 size:11487 flags:1
ret: 0 st:-1 ts:0.624171 flags:1 ret: 0 st:-1 ts:0.624171 flags:1
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29812 size:8798 flags:1 ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29806 size:8796 flags:1
ret: 0 st: 0 ts:-0.480000 flags:0 ret: 0 st: 0 ts:-0.480000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8995 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8990 flags:1
ret: 0 st: 0 ts:2.400000 flags:1 ret: 0 st: 0 ts:2.400000 flags:1
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:115836 size:11493 flags:1 ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:115824 size:11487 flags:1
ret: 0 st:-1 ts:1.306672 flags:0 ret: 0 st:-1 ts:1.306672 flags:0
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83764 size:11102 flags:1 ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83754 size:11099 flags:1
ret: 0 st:-1 ts:0.200839 flags:1 ret: 0 st:-1 ts:0.200839 flags:1
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8995 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8990 flags:1
ret: 0 st: 0 ts:-0.920000 flags:0 ret: 0 st: 0 ts:-0.920000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8995 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:8990 flags:1
ret: 0 st: 0 ts:2.000000 flags:1 ret: 0 st: 0 ts:2.000000 flags:1
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:115836 size:11493 flags:1 ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:115824 size:11487 flags:1
ret: 0 st:-1 ts:0.883340 flags:0 ret: 0 st:-1 ts:0.883340 flags:0
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54778 size:9934 flags:1 ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54770 size:9931 flags:1
ret:-1 st:-1 ts:-0.222493 flags:1 ret:-1 st:-1 ts:-0.222493 flags:1
ret:-1 st: 0 ts:2.680000 flags:0 ret:-1 st: 0 ts:2.680000 flags:0
ret: 0 st: 0 ts:1.560000 flags:1 ret: 0 st: 0 ts:1.560000 flags:1
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83764 size:11102 flags:1 ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83754 size:11099 flags:1
ret: 0 st:-1 ts:0.460008 flags:0 ret: 0 st:-1 ts:0.460008 flags:0
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29812 size:8798 flags:1 ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29806 size:8796 flags:1
ret:-1 st:-1 ts:-0.645825 flags:1 ret:-1 st:-1 ts:-0.645825 flags:1
---------------- ----------------
tests/data/a-wmv2.avi tests/data/a-wmv2.avi
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8918 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8917 flags:1
ret: 0 st:-1 ts:-1.000000 flags:0 ret: 0 st:-1 ts:-1.000000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8918 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8917 flags:1
ret: 0 st:-1 ts:1.894167 flags:1 ret: 0 st:-1 ts:1.894167 flags:1
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83802 size:11171 flags:1 ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83802 size:11170 flags:1
ret: 0 st: 0 ts:0.800000 flags:0 ret: 0 st: 0 ts:0.800000 flags:0
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54584 size:9990 flags:1 ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54584 size:9989 flags:1
ret:-1 st: 0 ts:-0.320000 flags:1 ret:-1 st: 0 ts:-0.320000 flags:1
ret:-1 st:-1 ts:2.576668 flags:0 ret:-1 st:-1 ts:2.576668 flags:0
ret: 0 st:-1 ts:1.470835 flags:1 ret: 0 st:-1 ts:1.470835 flags:1
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83802 size:11171 flags:1 ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83802 size:11170 flags:1
ret: 0 st: 0 ts:0.360000 flags:0 ret: 0 st: 0 ts:0.360000 flags:0
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29644 size:8840 flags:1 ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29644 size:8839 flags:1
ret:-1 st: 0 ts:-0.760000 flags:1 ret:-1 st: 0 ts:-0.760000 flags:1
ret:-1 st:-1 ts:2.153336 flags:0 ret:-1 st:-1 ts:2.153336 flags:0
ret: 0 st:-1 ts:1.047503 flags:1 ret: 0 st:-1 ts:1.047503 flags:1
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54584 size:9990 flags:1 ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54584 size:9989 flags:1
ret: 0 st: 0 ts:-0.040000 flags:0 ret: 0 st: 0 ts:-0.040000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8918 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8917 flags:1
ret: 0 st: 0 ts:2.840000 flags:1 ret: 0 st: 0 ts:2.840000 flags:1
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:116072 size:11555 flags:1 ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:116070 size:11554 flags:1
ret: 0 st:-1 ts:1.730004 flags:0 ret: 0 st:-1 ts:1.730004 flags:0
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:116072 size:11555 flags:1 ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:116070 size:11554 flags:1
ret: 0 st:-1 ts:0.624171 flags:1 ret: 0 st:-1 ts:0.624171 flags:1
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29644 size:8840 flags:1 ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29644 size:8839 flags:1
ret: 0 st: 0 ts:-0.480000 flags:0 ret: 0 st: 0 ts:-0.480000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8918 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8917 flags:1
ret: 0 st: 0 ts:2.400000 flags:1 ret: 0 st: 0 ts:2.400000 flags:1
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:116072 size:11555 flags:1 ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:116070 size:11554 flags:1
ret: 0 st:-1 ts:1.306672 flags:0 ret: 0 st:-1 ts:1.306672 flags:0
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83802 size:11171 flags:1 ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83802 size:11170 flags:1
ret: 0 st:-1 ts:0.200839 flags:1 ret: 0 st:-1 ts:0.200839 flags:1
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8918 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8917 flags:1
ret: 0 st: 0 ts:-0.920000 flags:0 ret: 0 st: 0 ts:-0.920000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8918 flags:1 ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5664 size:8917 flags:1
ret: 0 st: 0 ts:2.000000 flags:1 ret: 0 st: 0 ts:2.000000 flags:1
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:116072 size:11555 flags:1 ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:116070 size:11554 flags:1
ret: 0 st:-1 ts:0.883340 flags:0 ret: 0 st:-1 ts:0.883340 flags:0
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54584 size:9990 flags:1 ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:54584 size:9989 flags:1
ret:-1 st:-1 ts:-0.222493 flags:1 ret:-1 st:-1 ts:-0.222493 flags:1
ret:-1 st: 0 ts:2.680000 flags:0 ret:-1 st: 0 ts:2.680000 flags:0
ret: 0 st: 0 ts:1.560000 flags:1 ret: 0 st: 0 ts:1.560000 flags:1
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83802 size:11171 flags:1 ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:83802 size:11170 flags:1
ret: 0 st:-1 ts:0.460008 flags:0 ret: 0 st:-1 ts:0.460008 flags:0
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29644 size:8840 flags:1 ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:29644 size:8839 flags:1
ret:-1 st:-1 ts:-0.645825 flags:1 ret:-1 st:-1 ts:-0.645825 flags:1
---------------- ----------------
tests/data/b-libav-bgr24.yuv tests/data/b-libav-bgr24.yuv
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment