Index: vd_libmpeg2.c =================================================================== RCS file: /cvsroot/mplayer/main/libmpcodecs/vd_libmpeg2.c,v retrieving revision 1.27 diff -u -b -B -r1.27 vd_libmpeg2.c --- vd_libmpeg2.c 11 Oct 2003 11:21:54 -0000 1.27 +++ vd_libmpeg2.c 24 Jan 2004 16:13:52 -0000 @@ -23,7 +23,10 @@ //#include "libvo/video_out.h" // FIXME!!! +#include + #include "libmpeg2/mpeg2.h" +#include "libmpeg2/attributes.h" #include "libmpeg2/mpeg2_internal.h" //#include "libmpeg2/convert.h" @@ -37,7 +40,6 @@ // init driver static int init(sh_video_t *sh){ mpeg2dec_t * mpeg2dec; - const mpeg2_info_t * info; int accel; accel = 0; @@ -72,7 +74,7 @@ mpeg2_close (mpeg2dec); } -static void draw_slice (void * _sh, uint8_t ** src, unsigned int y){ +static void draw_slice (void * _sh, uint8_t * const * src, unsigned int y){ sh_video_t* sh = (sh_video_t*) _sh; mpeg2dec_t* mpeg2dec = sh->context; const mpeg2_info_t * info = mpeg2_info (mpeg2dec); @@ -111,7 +113,7 @@ while(1){ int state=mpeg2_parse (mpeg2dec); switch(state){ - case -1: + case STATE_BUFFER: // parsing of the passed buffer finished, return. // if(!mpi) printf("\nNO PICTURE!\n"); return mpi; @@ -148,33 +150,22 @@ if (info->current_picture->flags&PIC_FLAG_TOP_FIELD_FIRST) mpi->fields |= MP_IMGFIELD_TOP_FIRST; else mpi->fields &= ~MP_IMGFIELD_TOP_FIRST; - if (info->current_picture->flags&PIC_FLAG_REPEAT_FIRST_FIELD) - mpi->fields |= MP_IMGFIELD_REPEAT_FIRST; - else mpi->fields &= ~MP_IMGFIELD_REPEAT_FIRST; +// if (info->current_picture->flags&PIC_FLAG_REPEAT_FIRST_FIELD) +// mpi->fields |= MP_IMGFIELD_REPEAT_FIRST; + mpi->fields &= ~MP_IMGFIELD_REPEAT_FIRST; mpi->fields |= MP_IMGFIELD_ORDERED; - -#ifdef MPEG12_POSTPROC - if(!mpi->qscale){ - mpi->qstride=(info->sequence->picture_width+15)>>4; - mpi->qscale=malloc(mpi->qstride*((info->sequence->picture_height+15)>>4)); - } - mpeg2dec->decoder.quant_store=mpi->qscale; - mpeg2dec->decoder.quant_stride=mpi->qstride; - mpi->pict_type=type; // 1->I, 2->P, 3->B - mpi->qscale_type= 1; -#endif - if(mpi->flags&MP_IMGFLAG_DRAW_CALLBACK && !(mpi->flags&MP_IMGFLAG_DIRECT)){ // nice, filter/vo likes draw_callback :) mpeg2dec->decoder.convert=draw_slice; - mpeg2dec->decoder.fbuf_id=sh; + mpeg2dec->decoder.convert_id=sh; } else mpeg2dec->decoder.convert=NULL; break; } case STATE_SLICE: case STATE_END: + case STATE_INVALID_END: // decoding done: if(mpi) printf("AJAJJJJJJJJ2!\n"); if(info->display_fbuf) mpi=info->display_fbuf->id;