@ -434,13 +434,6 @@ retry:
if ( ret < 0 ) {
av_log ( s - > avctx , AV_LOG_ERROR , " header damaged \n " ) ;
return - 1 ;
} else if ( ( s - > width ! = avctx - > coded_width | |
s - > height ! = avctx - > coded_height | |
( s - > width + 15 ) > > 4 ! = s - > mb_width | |
( s - > height + 15 ) > > 4 ! = s - > mb_height ) & &
( HAVE_THREADS & & ( s - > avctx - > active_thread_type & FF_THREAD_FRAME ) ) ) {
av_log_missing_feature ( s - > avctx , " Width/height/bit depth/chroma idc changing with threads is " , 0 ) ;
return AVERROR_PATCHWELCOME ; // width / height changed during parallelized decoding
}
avctx - > has_b_frames = ! s - > low_delay ;
@ -577,21 +570,29 @@ retry:
/* FIXME: By the way H263 decoder is evolving it should have */
/* an H263EncContext */
if ( s - > width ! = avctx - > coded_width
| | s - > height ! = avctx - > coded_height ) {
/* H.263 could change picture size any time */
if ( ! avctx - > coded_width | | ! avctx - > coded_height ) {
ParseContext pc = s - > parse_context ; //FIXME move these demuxng hack to avformat
s - > parse_context . buffer = 0 ;
ff_MPV_common_end ( s ) ;
s - > parse_context = pc ;
}
if ( ! s - > context_initialized ) {
avcodec_set_dimensions ( avctx , s - > width , s - > height ) ;
goto retry ;
}
if ( s - > width ! = avctx - > coded_width | |
s - > height ! = avctx - > coded_height | |
s - > context_reinit ) {
/* H.263 could change picture size any time */
s - > context_reinit = 0 ;
avcodec_set_dimensions ( avctx , s - > width , s - > height ) ;
if ( ( ret = ff_MPV_common_frame_size_change ( s ) ) )
return ret ;
}
if ( ( s - > codec_id = = AV_CODEC_ID_H263 | | s - > codec_id = = AV_CODEC_ID_H263P | | s - > codec_id = = AV_CODEC_ID_H263I ) )
s - > gob_index = ff_h263_get_gob_height ( s ) ;