summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-10-11 15:41:56 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-10-11 15:46:48 +0200
commit526cb36e4b23d2aae14bba0d19947137ee94f263 (patch)
tree5929c96c8c1bc7b58cfd665d78806d7208fa00da /libavcodec
parenta75dd13b1bc2132f58bb438e6ca2935677191885 (diff)
parent4436f25a1682ada3f7226cb6fadf429946933161 (diff)
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.c19
-rw-r--r--libavcodec/ivi_common.c4
-rw-r--r--libavcodec/ivi_dsp.c5
-rw-r--r--libavcodec/ivi_dsp.h6
-rw-r--r--libavcodec/vc1.c5
-rw-r--r--libavcodec/vc1dec.c4
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)