Skip to content
Snippets Groups Projects
Commit e705d0ce authored by Carl Eugen Hoyos's avatar Carl Eugen Hoyos
Browse files

Set dwSuggestBufferSize to largest chunk size for every stream in avi.

Fixes playback with WMP 9 for files with large (rawvideo) frames
as explained in ticket #2145.

Fixes ticket #2818.
parent 057ebf12
No related branches found
No related tags found
No related merge requests found
Showing
with 26 additions and 20 deletions
......@@ -64,6 +64,7 @@ typedef struct {
int64_t audio_strm_length;
int packet_count;
int entry;
int max_size;
AVIIndex indexes;
} AVIStream;
......@@ -282,7 +283,7 @@ static int avi_write_header(AVFormatContext *s)
else
avio_wl32(pb, 0); /* length, XXX: filled later */
/* suggested buffer size */ //FIXME set at the end to largest chunk
/* suggested buffer size, is set to largest chunk size in avi_write_trailer */
if (enc->codec_type == AVMEDIA_TYPE_VIDEO)
avio_wl32(pb, 1024 * 1024);
else if (enc->codec_type == AVMEDIA_TYPE_AUDIO)
......@@ -628,6 +629,7 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt)
idx->cluster[cl][id].flags = flags;
idx->cluster[cl][id].pos = avio_tell(pb) - avi->movi_list;
idx->cluster[cl][id].len = size;
avist->max_size = FFMAX(avist->max_size, size);
idx->entry++;
}
......@@ -689,6 +691,10 @@ static int avi_write_trailer(AVFormatContext *s)
av_freep(&avist->indexes.cluster[j]);
av_freep(&avist->indexes.cluster);
avist->indexes.ents_allocated = avist->indexes.entry = 0;
if (pb->seekable) {
avio_seek(pb, avist->frames_hdr_strm + 4, SEEK_SET);
avio_wl32(pb, avist->max_size);
}
}
return res;
......
5423335cd809e631a2e03f97585348e0 *tests/data/fate/force_key_frames.avi
74daf0c27174418b74191fd855a631e8 *tests/data/fate/force_key_frames.avi
113308 tests/data/fate/force_key_frames.avi
8f68ad2e602ecd87a3e0c097ba99d773 *tests/data/fate/force_key_frames.out.framecrc
stddev:34363.01 PSNR: 5.61 MAXDIFF:56305 bytes: 7603200/ 186
8d3a3554cbe21bc232603ca26b0c4d3e *./tests/data/lavf/lavf.avi
cec38e42ff83343f6a5c300aa3009e7f *./tests/data/lavf/lavf.avi
330806 ./tests/data/lavf/lavf.avi
./tests/data/lavf/lavf.avi CRC=0xec6c3c68
34c4d4033d31c7401d32fee9d6ce0de2 *tests/data/fate/vsynth1-amv.avi
e3e6dcf69be5c598b4eae901034a80e2 *tests/data/fate/vsynth1-amv.avi
1365496 tests/data/fate/vsynth1-amv.avi
e38681b9527b6d2531942f8a176a0265 *tests/data/fate/vsynth1-amv.out.rawvideo
stddev: 10.07 PSNR: 28.06 MAXDIFF: 98 bytes: 7603200/ 7603200
41b011551d23ddadaab1083cb2106d9f *tests/data/fate/vsynth1-asv1.avi
992195272b94d8779b6216030b85ae18 *tests/data/fate/vsynth1-asv1.avi
1489644 tests/data/fate/vsynth1-asv1.avi
2dfc5dfc2c1cbbc2543257cd3d2df6af *tests/data/fate/vsynth1-asv1.out.rawvideo
stddev: 20.00 PSNR: 22.11 MAXDIFF: 158 bytes: 7603200/ 7603200
a0773690d0e772ff832adea1e8c16773 *tests/data/fate/vsynth1-asv2.avi
1e589b4dd70c4a8a7dbf4a466bab31ae *tests/data/fate/vsynth1-asv2.avi
1456044 tests/data/fate/vsynth1-asv2.avi
d451be09793cd0f35b6d91fc36e2571a *tests/data/fate/vsynth1-asv2.out.rawvideo
stddev: 18.82 PSNR: 22.63 MAXDIFF: 131 bytes: 7603200/ 7603200
eb9131f74c29cda83ba706293c85afb4 *tests/data/fate/vsynth1-cljr.avi
d04d90410c1936ec545e049cb7f0d1e9 *tests/data/fate/vsynth1-cljr.avi
5075648 tests/data/fate/vsynth1-cljr.avi
7bd979b8b397f7bac22a0102c7889452 *tests/data/fate/vsynth1-cljr.out.rawvideo
stddev: 6.74 PSNR: 31.55 MAXDIFF: 84 bytes: 7603200/ 7603200
394aa2d2ee50abbc2372e6d126c7eb5a *tests/data/fate/vsynth1-ffv1.avi
7563e82e673db8ca60e79e7e725e174f *tests/data/fate/vsynth1-ffv1.avi
2691264 tests/data/fate/vsynth1-ffv1.avi
c5ccac874dbf808e9088bc3107860042 *tests/data/fate/vsynth1-ffv1.out.rawvideo
stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 7603200/ 7603200
91c237f18bc19975077c85175daed734 *tests/data/fate/vsynth1-ffv1.0.avi
b9ce2f9781613d3380f7036d619af87b *tests/data/fate/vsynth1-ffv1.0.avi
2655364 tests/data/fate/vsynth1-ffv1.0.avi
c5ccac874dbf808e9088bc3107860042 *tests/data/fate/vsynth1-ffv1.0.out.rawvideo
stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 7603200/ 7603200
96789e7ed68de5314e65bc496c75e0a5 *tests/data/fate/vsynth1-ffvhuff.avi
9f1b37f939293e62673a49f38d4fba11 *tests/data/fate/vsynth1-ffvhuff.avi
5987196 tests/data/fate/vsynth1-ffvhuff.avi
c5ccac874dbf808e9088bc3107860042 *tests/data/fate/vsynth1-ffvhuff.out.rawvideo
stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 7603200/ 7603200
e37a6ec036bec59880e480df22840f0c *tests/data/fate/vsynth1-ffvhuff420p12.avi
7aad91fbb4f1f9fca8a0918145775a8b *tests/data/fate/vsynth1-ffvhuff420p12.avi
10267454 tests/data/fate/vsynth1-ffvhuff420p12.avi
b48f32c140712e8c7bf81cfdd66ae312 *tests/data/fate/vsynth1-ffvhuff420p12.out.rawvideo
stddev: 0.68 PSNR: 51.47 MAXDIFF: 1 bytes: 7603200/ 7603200
efc50fc409f4191001534ef5f186ca25 *tests/data/fate/vsynth1-ffvhuff422p10left.avi
6e043c33756fa245a8103b0db10071e5 *tests/data/fate/vsynth1-ffvhuff422p10left.avi
10552692 tests/data/fate/vsynth1-ffvhuff422p10left.avi
c31e6caada921ffa3daad3432ef3b754 *tests/data/fate/vsynth1-ffvhuff422p10left.out.rawvideo
stddev: 1.85 PSNR: 42.78 MAXDIFF: 29 bytes: 7603200/ 7603200
bd5b0acf47a6915c6d0889ca7fe48d0e *tests/data/fate/vsynth1-ffvhuff444.avi
80d9cc81d28509d059bda5e736183b9a *tests/data/fate/vsynth1-ffvhuff444.avi
10967556 tests/data/fate/vsynth1-ffvhuff444.avi
10fb42f1abf40a289c3edafc0390482c *tests/data/fate/vsynth1-ffvhuff444.out.rawvideo
stddev: 2.67 PSNR: 39.60 MAXDIFF: 43 bytes: 7603200/ 7603200
a891c4e5cfa3fb1f488e23d1b4f77f28 *tests/data/fate/vsynth1-ffvhuff444p16.avi
ba3943140ad9d11f1b8019c890a9be19 *tests/data/fate/vsynth1-ffvhuff444p16.avi
20610414 tests/data/fate/vsynth1-ffvhuff444p16.avi
ee8379fa217dfd023de3aa6974a14d1e *tests/data/fate/vsynth1-ffvhuff444p16.out.rawvideo
stddev: 2.66 PSNR: 39.62 MAXDIFF: 44 bytes: 7603200/ 7603200
2e613918f64c3473b887306fc5eb3c3d *tests/data/fate/vsynth1-h261.avi
364cc6703e90df30631dad52d1d9c909 *tests/data/fate/vsynth1-h261.avi
707546 tests/data/fate/vsynth1-h261.avi
85fde92037c2ccecc02e2d6c21a169b0 *tests/data/fate/vsynth1-h261.out.rawvideo
stddev: 9.11 PSNR: 28.93 MAXDIFF: 113 bytes: 7603200/ 7603200
7af82b4b3f99416f839ebc9714306dad *tests/data/fate/vsynth1-h261-trellis.avi
a61e040bbbfc6875e6842ac066a5285b *tests/data/fate/vsynth1-h261-trellis.avi
655412 tests/data/fate/vsynth1-h261-trellis.avi
70ceba944548ba680b1101c91707ea25 *tests/data/fate/vsynth1-h261-trellis.out.rawvideo
stddev: 8.75 PSNR: 29.28 MAXDIFF: 90 bytes: 7603200/ 7603200
36abb66d2480121f66a23e07d2b903be *tests/data/fate/vsynth1-h263.avi
3975fd5e232267fab6a5f8a5e095e3f9 *tests/data/fate/vsynth1-h263.avi
659674 tests/data/fate/vsynth1-h263.avi
aef88517578fa7f53fe5159c4b6754ef *tests/data/fate/vsynth1-h263.out.rawvideo
stddev: 8.03 PSNR: 30.03 MAXDIFF: 103 bytes: 7603200/ 7603200
ec2262cb7c674fd85afb14d9eb27d9d6 *tests/data/fate/vsynth1-h263-obmc.avi
d66bfd3b2cd4bc59d8ec218391294266 *tests/data/fate/vsynth1-h263-obmc.avi
657316 tests/data/fate/vsynth1-h263-obmc.avi
844f7ee27fa122e199fe20987b41a15c *tests/data/fate/vsynth1-h263-obmc.out.rawvideo
stddev: 8.16 PSNR: 29.89 MAXDIFF: 113 bytes: 7603200/ 7603200
03ebe03b70ee93524ec30c5abb69205a *tests/data/fate/vsynth1-h263p.avi
15a47620dcf88daaa71d4c679f620b47 *tests/data/fate/vsynth1-h263p.avi
2328362 tests/data/fate/vsynth1-h263p.avi
911330cb57c99c440234392be1588081 *tests/data/fate/vsynth1-h263p.out.rawvideo
stddev: 2.06 PSNR: 41.83 MAXDIFF: 20 bytes: 7603200/ 7603200
829bf3e22e5d1df2aa9a709c9d5aff57 *tests/data/fate/vsynth1-huffyuv.avi
958daafcef5d9bff6ba56ba04ab87882 *tests/data/fate/vsynth1-huffyuv.avi
7933788 tests/data/fate/vsynth1-huffyuv.avi
c5ccac874dbf808e9088bc3107860042 *tests/data/fate/vsynth1-huffyuv.out.rawvideo
stddev: 0.00 PSNR:999.99 MAXDIFF: 0 bytes: 7603200/ 7603200
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment