X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=libhb%2Fencxvid.c;h=18961dc28eed3f28a13f2934d6674bb36e85c570;hb=533776bbad20db93fe964bc69975f108b2a30888;hp=6d869ae36c23a1d5ca773d5b80f4ddb423446ec0;hpb=e8c0337fb71573f9f3cceba92e691c28afc5c426;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/libhb/encxvid.c b/libhb/encxvid.c index 6d869ae3..18961dc2 100644 --- a/libhb/encxvid.c +++ b/libhb/encxvid.c @@ -1,7 +1,7 @@ /* $Id: encxvid.c,v 1.10 2005/03/09 23:28:39 titer Exp $ This file is part of the HandBrake source code. - Homepage: . + Homepage: . It may be used under the terms of the GNU General Public License. */ #include "hb.h" @@ -128,10 +128,10 @@ void encxvidClose( hb_work_object_t * w ) if( pv->xvid ) { - hb_log( "encxvid: closing libxvidcore" ); + hb_deep_log( 2, "encxvid: closing libxvidcore" ); xvid_encore( pv->xvid, XVID_ENC_DESTROY, NULL, NULL); } - + free( pv ); w->private_data = NULL; } @@ -149,6 +149,14 @@ int encxvidWork( hb_work_object_t * w, hb_buffer_t ** buf_in, xvid_enc_frame_t frame; hb_buffer_t * in = *buf_in, * buf; + if ( in->size <= 0 ) + { + /* EOF on input - send it downstream & say we're done */ + *buf_out = in; + *buf_in = NULL; + return HB_WORK_DONE; + } + /* Should be way too large */ buf = hb_buffer_init( 3 * job->width * job->height / 2 ); buf->start = in->start; @@ -186,7 +194,7 @@ int encxvidWork( hb_work_object_t * w, hb_buffer_t ** buf_in, frame.quant_inter_matrix = NULL; buf->size = xvid_encore( pv->xvid, XVID_ENC_ENCODE, &frame, NULL ); - buf->key = ( frame.out_flags & XVID_KEYFRAME ); + buf->frametype = ( frame.out_flags & XVID_KEYFRAME ) ? HB_FRAME_KEY : HB_FRAME_REF; if( !pv->configDone ) { @@ -212,7 +220,7 @@ int encxvidWork( hb_work_object_t * w, hb_buffer_t ** buf_in, } } - hb_log( "encxvid: VOL size is %d bytes", vop_start - vol_start ); + hb_deep_log( 2, "encxvid: VOL size is %d bytes", vop_start - vol_start ); job->config.mpeg4.length = vop_start - vol_start; memcpy( job->config.mpeg4.bytes, &buf->data[vol_start], job->config.mpeg4.length );