[Mplayer-cvslog] CVS: main mencoder.c,1.2,1.3
Arpi of Ize
arpi at mplayer.dev.hu
Tue Oct 30 22:55:41 CET 2001
Update of /cvsroot/mplayer/main
In directory mplayer:/var/tmp.root/cvs-serv29555
Modified Files:
mencoder.c
Log Message:
fixed
Index: mencoder.c
===================================================================
RCS file: /cvsroot/mplayer/main/mencoder.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- mencoder.c 30 Oct 2001 21:22:28 -0000 1.2
+++ mencoder.c 30 Oct 2001 21:55:28 -0000 1.3
@@ -19,6 +19,9 @@
#include "libvo/video_out.h"
+#include "dec_audio.h"
+#include "dec_video.h"
+
#include <encore2.h>
#include "get_path.c"
@@ -100,12 +103,6 @@
//---------------
-extern stream_t* open_stream(char* filename,int vcd_track,int* file_format);
-
-extern int video_read_properties(sh_video_t *sh_video);
-extern int init_video(sh_video_t *sh_video);
-extern int decode_video(vo_functions_t *video_out,sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame);
-
static int eof=0;
static void exit_sighandler(int x){
@@ -251,6 +248,8 @@
mux_v->h.dwScale=10000;
mux_v->h.dwRate=mux_v->h.dwScale*sh_video->fps;
+mux_v->codec=VCODEC_DIVX4; // 0=streamcopy
+
switch(mux_v->codec){
case 0:
mux_v->bih=sh_video->bih;
@@ -306,22 +305,15 @@
int blit_frame=0;
float a_pts=0;
float v_pts=0;
+ unsigned char* start=NULL;
+ int in_size;
- //-------------------- Decode a frame: -----------------------
- { unsigned char* start=NULL;
- int in_size;
// get it!
// current_module="video_read_frame";
in_size=video_read_frame(sh_video,&frame_time,&start,force_fps);
if(in_size<0){ eof=1; break; }
- if(in_size>max_framesize) max_framesize=in_size; // stats
- // decode:
-// current_module="decode_video";
-// printf("Decode! %p %d \n",start,in_size);
- blit_frame=decode_video(video_out,sh_video,start,in_size,drop_frame);
- }
- //------------------------ frame decoded. --------------------
-
+// if(in_size>max_framesize) max_framesize=in_size; // stats
+
sh_video->timer+=frame_time;
if(pts_from_bps){
@@ -349,10 +341,20 @@
);
fflush(stdout);
- if(!blit_frame) continue;
+// if(!blit_frame) continue;
switch(mux_v->codec){
+case 0:
+ mux_v->buffer=start;
+ aviwrite_write_chunk(muxer,mux_v,muxer_f,in_size,(sh_video->ds->flags&1)?0x10:0);
+ break;
case VCODEC_DIVX4:
+ blit_frame=decode_video(&video_out,sh_video,start,in_size,0);
+ if(!blit_frame){
+ // empty.
+ aviwrite_write_chunk(muxer,mux_v,muxer_f,0,0);
+ break;
+ }
enc_frame.image=vo_image_ptr;
enc_frame.bitstream=mux_v->buffer;
enc_frame.length=mux_v->buffer_size;
@@ -369,12 +371,9 @@
enc_frame.quant=0;
enc_frame.intra=0;
enc_frame.mvs=NULL;
-
// printf("encoding...\n");
encore(enc_handle,ENC_OPT_ENCODE,&enc_frame,&enc_result);
-
// printf(" len=%d key:%d qualt:%d \n",enc_frame.length,enc_result.is_key_frame,enc_result.quantizer);
-
aviwrite_write_chunk(muxer,mux_v,muxer_f,enc_frame.length,enc_result.is_key_frame?0x10:0);
break;
}
More information about the MPlayer-cvslog
mailing list