* cehoyos/master: Avoid a possible overflow when reading Nikon avi files. Add h263dsp dependency to mpeg1video and mpeg2video encoders. Fix compilation with --disable-hwaccel=mpeg1_xvmc,mpeg2_xvmc Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n2.2-rc1
| @@ -1962,9 +1962,9 @@ mpc8_decoder_select="dsputil mpegaudiodsp" | |||||
| mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" | mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" | ||||
| mpeg_xvmc_decoder_select="mpeg2video_decoder" | mpeg_xvmc_decoder_select="mpeg2video_decoder" | ||||
| mpeg1video_decoder_select="error_resilience mpegvideo" | mpeg1video_decoder_select="error_resilience mpegvideo" | ||||
| mpeg1video_encoder_select="aandcttables mpegvideoenc" | |||||
| mpeg1video_encoder_select="aandcttables mpegvideoenc h263dsp" | |||||
| mpeg2video_decoder_select="error_resilience mpegvideo" | mpeg2video_decoder_select="error_resilience mpegvideo" | ||||
| mpeg2video_encoder_select="aandcttables mpegvideoenc" | |||||
| mpeg2video_encoder_select="aandcttables mpegvideoenc h263dsp" | |||||
| mpeg4_decoder_select="h263_decoder mpeg4video_parser" | mpeg4_decoder_select="h263_decoder mpeg4video_parser" | ||||
| mpeg4_encoder_select="h263_encoder" | mpeg4_encoder_select="h263_encoder" | ||||
| msmpeg4v1_decoder_select="h263_decoder" | msmpeg4v1_decoder_select="h263_decoder" | ||||
| @@ -770,7 +770,7 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) | |||||
| memset(s->last_mv, 0, sizeof(s->last_mv)); /* reset mv prediction */ | memset(s->last_mv, 0, sizeof(s->last_mv)); /* reset mv prediction */ | ||||
| s->mb_intra = 1; | s->mb_intra = 1; | ||||
| // if 1, we memcpy blocks in xvmcvideo | // if 1, we memcpy blocks in xvmcvideo | ||||
| if (CONFIG_XVMC && s->pack_pblocks) { | |||||
| if ((CONFIG_MPEG1_XVMC_HWACCEL || CONFIG_MPEG2_XVMC_HWACCEL) && s->pack_pblocks) { | |||||
| ff_xvmc_pack_pblocks(s, -1); // inter are always full blocks | ff_xvmc_pack_pblocks(s, -1); // inter are always full blocks | ||||
| } | } | ||||
| @@ -986,7 +986,7 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) | |||||
| } | } | ||||
| //if 1, we memcpy blocks in xvmcvideo | //if 1, we memcpy blocks in xvmcvideo | ||||
| if (CONFIG_XVMC && s->pack_pblocks) { | |||||
| if ((CONFIG_MPEG1_XVMC_HWACCEL || CONFIG_MPEG2_XVMC_HWACCEL) && s->pack_pblocks) { | |||||
| ff_xvmc_pack_pblocks(s, cbp); | ff_xvmc_pack_pblocks(s, cbp); | ||||
| } | } | ||||
| @@ -1700,7 +1700,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, | |||||
| for (;;) { | for (;;) { | ||||
| // If 1, we memcpy blocks in xvmcvideo. | // If 1, we memcpy blocks in xvmcvideo. | ||||
| if (CONFIG_XVMC && s->pack_pblocks) | |||||
| if ((CONFIG_MPEG1_XVMC_HWACCEL || CONFIG_MPEG2_XVMC_HWACCEL) && s->pack_pblocks) | |||||
| ff_xvmc_init_block(s); // set s->block | ff_xvmc_init_block(s); // set s->block | ||||
| if (mpeg_decode_mb(s, s->block) < 0) | if (mpeg_decode_mb(s, s->block) < 0) | ||||
| @@ -350,8 +350,7 @@ static void avi_read_nikon(AVFormatContext *s, uint64_t end) | |||||
| uint16_t size = avio_rl16(s->pb); | uint16_t size = avio_rl16(s->pb); | ||||
| const char *name = NULL; | const char *name = NULL; | ||||
| char buffer[64] = { 0 }; | char buffer[64] = { 0 }; | ||||
| if (avio_tell(s->pb) + size > tag_end) | |||||
| size = tag_end - avio_tell(s->pb); | |||||
| size = FFMIN(size, tag_end - avio_tell(s->pb)); | |||||
| size -= avio_read(s->pb, buffer, | size -= avio_read(s->pb, buffer, | ||||
| FFMIN(size, sizeof(buffer) - 1)); | FFMIN(size, sizeof(buffer) - 1)); | ||||
| switch (tag) { | switch (tag) { | ||||