summaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2004-02-09 15:23:35 +0000
committerMichael Niedermayer <michaelni@gmx.at>2004-02-09 15:23:35 +0000
commit8a36717afcb99e63535c2c6ad1459c7222365a9f (patch)
tree2a93c59e1967f48e49d154917da424b2ce1ae7c4 /libavcodec
parent99683a307776a7638ccce236a4ce5aa3e914e77d (diff)
downloadffmpeg-streaming-8a36717afcb99e63535c2c6ad1459c7222365a9f.zip
ffmpeg-streaming-8a36717afcb99e63535c2c6ad1459c7222365a9f.tar.gz
rv10/obmc fixes
Originally committed as revision 2768 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/h263.c28
-rw-r--r--libavcodec/rv10.c11
2 files changed, 30 insertions, 9 deletions
diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index 6b9e559..b02bace 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -3866,8 +3866,15 @@ int ff_h263_decode_mb(MpegEncContext *s,
}
}
+ /* decode each block */
+ for (i = 0; i < 6; i++) {
+ if (h263_decode_block(s, block[i], i, cbp&32) < 0)
+ return -1;
+ cbp+=cbp;
+ }
+
if(s->obmc){
- if(s->pict_type == P_TYPE && s->mb_x+1<s->mb_width)
+ if(s->pict_type == P_TYPE && s->mb_x+1<s->mb_width && s->mb_num_left != 1)
preview_obmc(s);
}
} else if(s->pict_type==B_TYPE) {
@@ -3957,6 +3964,13 @@ int ff_h263_decode_mb(MpegEncContext *s,
}
s->current_picture.mb_type[xy]= mb_type;
+
+ /* decode each block */
+ for (i = 0; i < 6; i++) {
+ if (h263_decode_block(s, block[i], i, cbp&32) < 0)
+ return -1;
+ cbp+=cbp;
+ }
} else { /* I-Frame */
do{
cbpc = get_vlc2(&s->gb, intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2);
@@ -3989,13 +4003,13 @@ intra:
if (dquant) {
h263_decode_dquant(s);
}
- }
- /* decode each block */
- for (i = 0; i < 6; i++) {
- if (h263_decode_block(s, block[i], i, cbp&32) < 0)
- return -1;
- cbp+=cbp;
+ /* decode each block */
+ for (i = 0; i < 6; i++) {
+ if (h263_decode_block(s, block[i], i, cbp&32) < 0)
+ return -1;
+ cbp+=cbp;
+ }
}
end:
diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c
index 3b63464..06f2b4e 100644
--- a/libavcodec/rv10.c
+++ b/libavcodec/rv10.c
@@ -449,6 +449,12 @@ static int rv10_decode_init(AVCodecContext *avctx)
s->h263_long_vectors=0;
s->low_delay=1;
break;
+ case 0x10002000:
+ s->rv10_version= 3;
+ s->h263_long_vectors=1;
+ s->low_delay=1;
+ s->obmc=1;
+ break;
case 0x10003000:
s->rv10_version= 3;
s->h263_long_vectors=1;
@@ -586,13 +592,14 @@ static int rv10_decode_packet(AVCodecContext *avctx,
s->block_wrap[5]= s->mb_width + 2;
ff_init_block_index(s);
/* decode each macroblock */
- for(i=0;i<mb_count;i++) {
+
+ for(s->mb_num_left= mb_count; s->mb_num_left>0; s->mb_num_left--) {
int ret;
ff_update_block_index(s);
#ifdef DEBUG
printf("**mb x=%d y=%d\n", s->mb_x, s->mb_y);
#endif
-
+
s->dsp.clear_blocks(s->block[0]);
s->mv_dir = MV_DIR_FORWARD;
s->mv_type = MV_TYPE_16X16;
OpenPOWER on IntegriCloud