From 290742a2be87003d772f5eab4c3a23e757754212 Mon Sep 17 00:00:00 2001 From: alex Date: Sat, 8 Dec 2001 12:21:23 +0000 Subject: [PATCH] fixed framecopy git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3385 b3059339-0415-0410-9bf9-f77b7e298cf2 --- cfg-mencoder.h | 2 +- mencoder.c | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/cfg-mencoder.h b/cfg-mencoder.h index a1c9a49c88..ff0cc6603f 100644 --- a/cfg-mencoder.h +++ b/cfg-mencoder.h @@ -44,7 +44,7 @@ struct config lameopts_conf[]={ #endif struct config ovc_conf[]={ - {"copy", &out_video_codec, CONF_TYPE_FLAG, 0, 0, 0}, + {"copy", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_COPY}, {"frameno", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_FRAMENO}, {"divx4", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_DIVX4}, {"help", "\nAvailable codecs:\n copy\n frameno\n divx4\n\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0}, diff --git a/mencoder.c b/mencoder.c index 75aca56a71..d7fac4d8a1 100644 --- a/mencoder.c +++ b/mencoder.c @@ -1,4 +1,4 @@ - +#define VCODEC_COPY 0 #define VCODEC_FRAMENO 1 #define VCODEC_DIVX4 2 @@ -503,8 +503,24 @@ mux_v->h.dwRate=mux_v->h.dwScale*(force_ofps?force_ofps:sh_video->fps); mux_v->codec=out_video_codec; switch(mux_v->codec){ -case 0: - mux_v->bih=sh_video->bih; +case VCODEC_COPY: + printf("sh_video->bih: %x\n", sh_video->bih); + if (sh_video->bih) + mux_v->bih=sh_video->bih; + else + { + mux_v->bih=malloc(sizeof(BITMAPINFOHEADER)); + mux_v->bih->biSize=sizeof(BITMAPINFOHEADER); + mux_v->bih->biWidth=sh_video->disp_w; + mux_v->bih->biHeight=sh_video->disp_h; + mux_v->bih->biCompression=sh_video->format; + mux_v->bih->biPlanes=1; + mux_v->bih->biBitCount=24; // FIXME!!! + mux_v->bih->biSizeImage=mux_v->bih->biWidth*mux_v->bih->biHeight*(mux_v->bih->biBitCount/8); + } + printf("videocodec: framecopy (%dx%d %dbpp fourcc=%x)\n", + mux_v->bih->biWidth, mux_v->bih->biHeight, + mux_v->bih->biBitCount, mux_v->bih->biCompression); break; case VCODEC_FRAMENO: mux_v->bih=malloc(sizeof(BITMAPINFOHEADER)); @@ -591,7 +607,7 @@ printf("Writing AVI header...\n"); aviwrite_write_header(muxer,muxer_f); switch(mux_v->codec){ -case 0: +case VCODEC_COPY: break; case VCODEC_FRAMENO: decoded_frameno=0; @@ -792,7 +808,7 @@ if( (v_pts_corr>=(float)mux_v->h.dwScale/mux_v->h.dwRate && skip_flag<0) switch(mux_v->codec){ -case 0: +case VCODEC_COPY: mux_v->buffer=start; if(skip_flag<=0) aviwrite_write_chunk(muxer,mux_v,muxer_f,in_size,(sh_video->ds->flags&1)?0x10:0); break;