Mercurial > libavcodec.hg
diff mpegvideo.c @ 2537:14fef0f3f532 libavcodec
H.264: decode arbitrary frame orders and allow B-frames as references.
author | lorenm |
---|---|
date | Fri, 04 Mar 2005 12:47:38 +0000 |
parents | 0420f228ebb6 |
children | 9a7770ebed14 |
line wrap: on
line diff
--- a/mpegvideo.c Thu Mar 03 12:12:44 2005 +0000 +++ b/mpegvideo.c Fri Mar 04 12:47:38 2005 +0000 @@ -1471,7 +1471,8 @@ pic= (AVFrame*)&s->picture[i]; } - pic->reference= s->pict_type != B_TYPE && !s->dropable ? 3 : 0; + pic->reference= (s->pict_type != B_TYPE || s->codec_id == CODEC_ID_H264) + && !s->dropable ? 3 : 0; pic->coded_picture_number= s->coded_picture_number++; @@ -1566,7 +1567,7 @@ XVMC_field_end(s); }else #endif - if(s->unrestricted_mv && s->pict_type != B_TYPE && !s->intra_only && !(s->flags&CODEC_FLAG_EMU_EDGE)) { + if(s->unrestricted_mv && s->current_picture.reference && !s->intra_only && !(s->flags&CODEC_FLAG_EMU_EDGE)) { draw_edges(s->current_picture.data[0], s->linesize , s->h_edge_pos , s->v_edge_pos , EDGE_WIDTH ); draw_edges(s->current_picture.data[1], s->uvlinesize, s->h_edge_pos>>1, s->v_edge_pos>>1, EDGE_WIDTH/2); draw_edges(s->current_picture.data[2], s->uvlinesize, s->h_edge_pos>>1, s->v_edge_pos>>1, EDGE_WIDTH/2);