aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/mpegvideo.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2003-07-20 14:48:05 +0000
committerMichael Niedermayer <michaelni@gmx.at>2003-07-20 14:48:05 +0000
commit3bb07d616556f6489ce3aab1a5ec6b6dfbbd6217 (patch)
treeb487bd51f35a9339d12dac3d167f835c3538ee3a /libavcodec/mpegvideo.c
parent42928ccbc24b2a9f4f6777d36e63fc1981783448 (diff)
downloadffmpeg-3bb07d616556f6489ce3aab1a5ec6b6dfbbd6217.tar.gz
default for slices is display order again
optional support for field slices & slices in coded order and single component slices for svq1 (unfinished) Originally committed as revision 2066 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpegvideo.c')
-rw-r--r--libavcodec/mpegvideo.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index d25cc4895f..500d076824 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -2726,10 +2726,25 @@ static int pix_diff_vcmp16x8(uint8_t *s1, uint8_t*s2, int stride){ //FIXME move
*/
void ff_draw_horiz_band(MpegEncContext *s, int y, int h){
if (s->avctx->draw_horiz_band) {
+ AVFrame *src;
uint8_t *src_ptr[3];
int offset[4];
+
+ if(s->picture_structure != PICT_FRAME){
+ h <<= 1;
+ y <<= 1;
+ if(s->first_field && !(s->avctx->slice_flags&SLICE_FLAG_ALLOW_FIELD)) return;
+ }
+
h= FFMIN(h, s->height - y);
+ if(s->pict_type==B_TYPE || s->low_delay || (s->avctx->slice_flags&SLICE_FLAG_CODED_ORDER))
+ src= (AVFrame*)s->current_picture_ptr;
+ else if(s->last_picture_ptr)
+ src= (AVFrame*)s->last_picture_ptr;
+ else
+ return;
+
if(s->pict_type==B_TYPE && s->picture_structure == PICT_FRAME && s->out_format != FMT_H264){
offset[0]=
offset[1]=
@@ -2744,8 +2759,8 @@ void ff_draw_horiz_band(MpegEncContext *s, int y, int h){
emms_c();
- s->avctx->draw_horiz_band(s->avctx, (AVFrame*)s->current_picture_ptr, offset,
- y, s->width, h);
+ s->avctx->draw_horiz_band(s->avctx, src, offset,
+ y, s->picture_structure, h);
}
}