Mercurial > mplayer.hg
view libmpcodecs/vd_libdv.c @ 7099:0b70f3dc34eb
Applied patch by Andras Mohari <mayday@varoshaza.nagyatad.hu>, with some
small additions.
* Replaced <UL> with <OL> where it made sense (to me :-)).
* Moved "Developer Cries" into the appendix (as Appendix F)
with s/Flame Wars/Developer Cries/ and
s/In medias res/Developer Cries/.
* Renamed "Appendix X" to "Appendix E".
* Put a "Hint" inside <BLOCKQUOTE>.
* Converted 3-pass encoding and mga_vid installation
instructions to lists.
* Converted options tables (video eq, SDL, fbdev, VESA, DXR3, TV input,
DivX4Linux, AAlib) to <DL> lists.
* The "sections" for MPsub and INSTALLING OSD are numbered and displayed
in the TOC now.
* Changed the text inside some <H4> tags.
author | diego |
---|---|
date | Tue, 27 Aug 2002 18:06:07 +0000 |
parents | 0145bba6e201 |
children | 28677d779205 |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <unistd.h> #include <math.h> #include "config.h" #ifdef HAVE_LIBDV095 #include "img_format.h" #include <libdv/dv.h> #include <libdv/dv_types.h> #include "stream.h" #include "demuxer.h" #include "stheader.h" #include "vd_internal.h" static vd_info_t info = { "Raw DV Video Decoder", "libdv", VFM_LIBDV, "Alexander Neundorf <neundorf@kde.org>", "http://libdv.sf.net", "" }; LIBVD_EXTERN(libdv) // to set/get/query special features/parameters static int control(sh_video_t *sh,int cmd,void* arg,...){ return CONTROL_UNKNOWN; } static dv_decoder_t* global_rawdv_decoder=NULL; dv_decoder_t* init_global_rawdv_decoder() { if(!global_rawdv_decoder){ global_rawdv_decoder=dv_decoder_new(TRUE,TRUE,FALSE); global_rawdv_decoder->quality=DV_QUALITY_BEST; global_rawdv_decoder->prev_frame_decoded = 0; } return global_rawdv_decoder; } // init driver static int init(sh_video_t *sh) { sh->context = (void *)init_global_rawdv_decoder(); return mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h,IMGFMT_YUY2); } // uninit driver static void uninit(sh_video_t *sh){ } // decode a frame static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags) { mp_image_t* mpi; dv_decoder_t *decoder=sh->context; if(len<=0 || (flags&3)){ // fprintf(stderr,"decode() (rawdv) SKIPPED\n"); return NULL; // skipped frame } dv_parse_header(decoder, data); mpi=mpcodecs_get_image(sh, MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE, sh->disp_w, sh->disp_h); if(!mpi){ // temporary! fprintf(stderr,"couldn't allocate image for stderr codec\n"); return NULL; } dv_decode_full_frame(decoder, data, e_dv_color_yuv, mpi->planes, mpi->stride); return mpi; } #endif