diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-10-11 15:41:56 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-10-11 15:46:48 +0200 |
commit | 526cb36e4b23d2aae14bba0d19947137ee94f263 (patch) | |
tree | 5929c96c8c1bc7b58cfd665d78806d7208fa00da /libavcodec | |
parent | a75dd13b1bc2132f58bb438e6ca2935677191885 (diff) | |
parent | 4436f25a1682ada3f7226cb6fadf429946933161 (diff) | |
download | ffmpeg-526cb36e4b23d2aae14bba0d19947137ee94f263.tar.gz |
Merge commit '4436f25a1682ada3f7226cb6fadf429946933161'
* commit '4436f25a1682ada3f7226cb6fadf429946933161':
build: remove references to unused EXTRAOBJS variable
lavfi: convert input/ouput list compound literals to named objects
fate: add h263 obmc vsynth tests
avconv: remove bogus warning when using avconv -h without parameter
averror: explicitly define AVERROR_* values
flashsv: propagate inflateReset() errors
indeo4/5: remove constant parameter num_bands from wavelet recomposition
mxfdec: return error if no segments are available in mxf_get_sorted_table_segments
Double motion vector range for HPEL interlaced picture in proper place
Conflicts:
libavcodec/v210dec.h
libavfilter/af_aformat.c
libavfilter/af_amix.c
libavfilter/af_asyncts.c
libavfilter/af_channelmap.c
libavfilter/af_join.c
libavfilter/asrc_anullsrc.c
libavfilter/buffersrc.c
libavfilter/f_setpts.c
libavfilter/f_settb.c
libavfilter/fifo.c
libavfilter/src_movie.c
libavfilter/vf_ass.c
libavfilter/vf_blackframe.c
libavfilter/vf_boxblur.c
libavfilter/vf_delogo.c
libavfilter/vf_drawbox.c
libavfilter/vf_drawtext.c
libavfilter/vf_fade.c
libavfilter/vf_fieldorder.c
libavfilter/vf_fps.c
libavfilter/vf_hflip.c
libavfilter/vf_overlay.c
libavfilter/vf_pad.c
libavfilter/vf_select.c
libavfilter/vf_transpose.c
libavfilter/vf_yadif.c
libavfilter/vsrc_testsrc.c
libavformat/mxfdec.c
libavutil/error.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/flashsv.c | 19 | ||||
-rw-r--r-- | libavcodec/ivi_common.c | 4 | ||||
-rw-r--r-- | libavcodec/ivi_dsp.c | 5 | ||||
-rw-r--r-- | libavcodec/ivi_dsp.h | 6 | ||||
-rw-r--r-- | libavcodec/vc1.c | 5 | ||||
-rw-r--r-- | libavcodec/vc1dec.c | 4 |
6 files changed, 26 insertions, 17 deletions
diff --git a/libavcodec/flashsv.c b/libavcodec/flashsv.c index 367d189bee..8d6f39d97a 100644 --- a/libavcodec/flashsv.c +++ b/libavcodec/flashsv.c @@ -122,10 +122,11 @@ static av_cold int flashsv_decode_init(AVCodecContext *avctx) } -static void flashsv2_prime(FlashSVContext *s, uint8_t *src, - int size, int unp_size) +static int flashsv2_prime(FlashSVContext *s, uint8_t *src, + int size, int unp_size) { z_stream zs; + int zret; // Zlib return code zs.zalloc = NULL; zs.zfree = NULL; @@ -145,13 +146,18 @@ static void flashsv2_prime(FlashSVContext *s, uint8_t *src, deflate(&zs, Z_SYNC_FLUSH); deflateEnd(&zs); - inflateReset(&s->zstream); + if ((zret = inflateReset(&s->zstream)) != Z_OK) { + av_log(s->avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret); + return AVERROR_UNKNOWN; + } s->zstream.next_in = s->deflate_block; s->zstream.avail_in = s->deflate_block_size - zs.avail_out; s->zstream.next_out = s->tmpblock; s->zstream.avail_out = s->block_size * 3; inflate(&s->zstream, Z_SYNC_FLUSH); + + return 0; } static int flashsv_decode_block(AVCodecContext *avctx, AVPacket *avpkt, @@ -164,11 +170,14 @@ static int flashsv_decode_block(AVCodecContext *avctx, AVPacket *avpkt, int k; int ret = inflateReset(&s->zstream); if (ret != Z_OK) { - //return -1; + av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", ret); + return AVERROR_UNKNOWN; } if (s->zlibprime_curr || s->zlibprime_prev) { - flashsv2_prime(s, s->blocks[blk_idx].pos, s->blocks[blk_idx].size, + ret = flashsv2_prime(s, s->blocks[blk_idx].pos, s->blocks[blk_idx].size, s->blocks[blk_idx].unp_size); + if (ret < 0) + return ret; } s->zstream.next_in = avpkt->data + get_bits_count(gb) / 8; s->zstream.avail_in = block_size; diff --git a/libavcodec/ivi_common.c b/libavcodec/ivi_common.c index 9ecf9cdf2c..ff2a1a87ee 100644 --- a/libavcodec/ivi_common.c +++ b/libavcodec/ivi_common.c @@ -830,9 +830,9 @@ int ff_ivi_decode_frame(AVCodecContext *avctx, void *data, int *data_size, if (ctx->is_scalable) { if (avctx->codec_id == AV_CODEC_ID_INDEO4) - ff_ivi_recompose_haar(&ctx->planes[0], ctx->frame.data[0], ctx->frame.linesize[0], 4); + ff_ivi_recompose_haar(&ctx->planes[0], ctx->frame.data[0], ctx->frame.linesize[0]); else - ff_ivi_recompose53 (&ctx->planes[0], ctx->frame.data[0], ctx->frame.linesize[0], 4); + ff_ivi_recompose53 (&ctx->planes[0], ctx->frame.data[0], ctx->frame.linesize[0]); } else { ff_ivi_output_plane(&ctx->planes[0], ctx->frame.data[0], ctx->frame.linesize[0]); } diff --git a/libavcodec/ivi_dsp.c b/libavcodec/ivi_dsp.c index bedd5dc93c..52cd402cb1 100644 --- a/libavcodec/ivi_dsp.c +++ b/libavcodec/ivi_dsp.c @@ -33,7 +33,7 @@ #include "ivi_dsp.h" void ff_ivi_recompose53(const IVIPlaneDesc *plane, uint8_t *dst, - const int dst_pitch, const int num_bands) + const int dst_pitch) { int x, y, indx; int32_t p0, p1, p2, p3, tmp0, tmp1, tmp2; @@ -41,6 +41,7 @@ void ff_ivi_recompose53(const IVIPlaneDesc *plane, uint8_t *dst, int32_t b3_1, b3_2, b3_3, b3_4, b3_5, b3_6, b3_7, b3_8, b3_9; int32_t pitch, back_pitch; const IDWTELEM *b0_ptr, *b1_ptr, *b2_ptr, *b3_ptr; + const int num_bands = 4; /* all bands should have the same pitch */ pitch = plane->bands[0].pitch; @@ -189,7 +190,7 @@ void ff_ivi_recompose53(const IVIPlaneDesc *plane, uint8_t *dst, } void ff_ivi_recompose_haar(const IVIPlaneDesc *plane, uint8_t *dst, - const int dst_pitch, const int num_bands) + const int dst_pitch) { int x, y, indx, b0, b1, b2, b3, p0, p1, p2, p3; const IDWTELEM *b0_ptr, *b1_ptr, *b2_ptr, *b3_ptr; diff --git a/libavcodec/ivi_dsp.h b/libavcodec/ivi_dsp.h index 5a3441764c..e95bb117d9 100644 --- a/libavcodec/ivi_dsp.h +++ b/libavcodec/ivi_dsp.h @@ -38,10 +38,9 @@ * @param[in] plane pointer to the descriptor of the plane being processed * @param[out] dst pointer to the destination buffer * @param[in] dst_pitch pitch of the destination buffer - * @param[in] num_bands number of wavelet bands to be processed */ void ff_ivi_recompose53(const IVIPlaneDesc *plane, uint8_t *dst, - const int dst_pitch, const int num_bands); + const int dst_pitch); /** * Haar wavelet recomposition filter for Indeo 4 @@ -49,10 +48,9 @@ void ff_ivi_recompose53(const IVIPlaneDesc *plane, uint8_t *dst, * @param[in] plane pointer to the descriptor of the plane being processed * @param[out] dst pointer to the destination buffer * @param[in] dst_pitch pitch of the destination buffer - * @param[in] num_bands number of wavelet bands to be processed */ void ff_ivi_recompose_haar(const IVIPlaneDesc *plane, uint8_t *dst, - const int dst_pitch, const int num_bands); + const int dst_pitch); /** * two-dimensional inverse Haar 8x8 transform for Indeo 4 diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c index 56c5bf9932..ae07d177cb 100644 --- a/libavcodec/vc1.c +++ b/libavcodec/vc1.c @@ -1274,6 +1274,11 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) break; } + if (v->fcm != PROGRESSIVE && !v->s.quarter_sample) { + v->range_x <<= 1; + v->range_y <<= 1; + } + /* AC Syntax */ v->c_ac_table_index = decode012(gb); if (v->s.pict_type == AV_PICTURE_TYPE_I || v->s.pict_type == AV_PICTURE_TYPE_BI) { diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index c87bd51881..7aae8cc926 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -1575,10 +1575,6 @@ static inline void vc1_pred_mv(VC1Context *v, int n, int dmv_x, int dmv_y, } } - if (v->field_mode && !s->quarter_sample) { - r_x <<= 1; - r_y <<= 1; - } if (v->field_mode && v->numref) r_y >>= 1; if (v->field_mode && v->cur_field_type && v->ref_field_type[dir] == 0) |