changeset 3384:cff2875ad6e6

fixed framecopy
author alex
date Sat, 08 Dec 2001 12:21:23 +0000
parents 1842ec5916a4
children 6975a75a47fb
files cfg-mencoder.h mencoder.c
diffstat 2 files changed, 22 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/cfg-mencoder.h	Sat Dec 08 11:24:32 2001 +0000
+++ b/cfg-mencoder.h	Sat Dec 08 12:21:23 2001 +0000
@@ -44,7 +44,7 @@
 #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},
--- a/mencoder.c	Sat Dec 08 11:24:32 2001 +0000
+++ b/mencoder.c	Sat Dec 08 12:21:23 2001 +0000
@@ -1,4 +1,4 @@
-
+#define VCODEC_COPY 0
 #define VCODEC_FRAMENO 1
 #define VCODEC_DIVX4 2
 
@@ -503,8 +503,24 @@
 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 @@
 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 @@
 
 
 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;