From 18ade9543fe07620ad429747a6f1266b09627c18 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 6 Dec 2004 17:21:17 +0000 Subject: rv10 thread safety fix / rv10 ffplay fix Originally committed as revision 3733 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/rv10.c | 7 ++++--- libavformat/rm.c | 7 +------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c index 663d8adb3d..7dc3ea21f6 100644 --- a/libavcodec/rv10.c +++ b/libavcodec/rv10.c @@ -276,9 +276,8 @@ static int get_num(GetBitContext *gb) /* read RV 1.0 compatible frame header */ static int rv10_decode_picture_header(MpegEncContext *s) { - int mb_count, pb_frame, marker, full_frame, unk; + int mb_count, pb_frame, marker, unk, mb_xy; - full_frame= s->avctx->slice_count==1; //printf("ff:%d\n", full_frame); marker = get_bits(&s->gb, 1); @@ -321,7 +320,9 @@ static int rv10_decode_picture_header(MpegEncContext *s) } /* if multiple packets per frame are sent, the position at which to display the macro blocks is coded here */ - if ((!full_frame) || show_bits(&s->gb, 12)==0) { + + mb_xy= s->mb_x + s->mb_y*s->mb_width; + if(show_bits(&s->gb, 12)==0 || (mb_xy && mb_xy < s->mb_num)){ s->mb_x = get_bits(&s->gb, 6); /* mb_x */ s->mb_y = get_bits(&s->gb, 6); /* mb_y */ mb_count = get_bits(&s->gb, 12); diff --git a/libavformat/rm.c b/libavformat/rm.c index e6de873b75..ba73a337bd 100644 --- a/libavformat/rm.c +++ b/libavformat/rm.c @@ -791,12 +791,7 @@ static int rm_read_packet(AVFormatContext *s, AVPacket *pkt) } /* picture number */ pic_num= get_byte(pb); - - //XXX/FIXME/HACK, demuxer should be fixed to send complete frames ... - if(st->codec.slice_offset==NULL) - st->codec.slice_offset= (int*)av_malloc(sizeof(int)); - st->codec.slice_count= full_frame; - st->codec.slice_offset[0]= 0; +// av_log(NULL, AV_LOG_DEBUG, "%X %d\n", h, pic_num); } av_new_packet(pkt, len); -- cgit v1.2.3