mirror of
https://github.com/mpv-player/mpv
synced 2024-09-12 23:45:53 +02:00
cleanup
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8341 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
ad05ae27cb
commit
32f03d2030
@ -33,7 +33,7 @@ LIBVD_EXTERN(ffmpeg)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD < 4641
|
#if LIBAVCODEC_BUILD < 4641
|
||||||
#error your version of libavcodec is too old, get a newer one, and dont send a bugreport, THIS IS NO BUG
|
#error we dont support libavcodec prior to build 4641, get the latest libavcodec CVS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int avcodec_inited=0;
|
int avcodec_inited=0;
|
||||||
@ -64,11 +64,7 @@ typedef struct {
|
|||||||
static int get_buffer(AVCodecContext *avctx, AVVideoFrame *pic);
|
static int get_buffer(AVCodecContext *avctx, AVVideoFrame *pic);
|
||||||
static void release_buffer(AVCodecContext *avctx, AVVideoFrame *pic);
|
static void release_buffer(AVCodecContext *avctx, AVVideoFrame *pic);
|
||||||
|
|
||||||
#ifdef FF_BUG_AUTODETECT
|
|
||||||
static int lavc_param_workaround_bugs= FF_BUG_AUTODETECT;
|
static int lavc_param_workaround_bugs= FF_BUG_AUTODETECT;
|
||||||
#else
|
|
||||||
static int lavc_param_workaround_bugs= 0;
|
|
||||||
#endif
|
|
||||||
static int lavc_param_error_resilience=2;
|
static int lavc_param_error_resilience=2;
|
||||||
static int lavc_param_error_concealment=3;
|
static int lavc_param_error_concealment=3;
|
||||||
static int lavc_param_gray=0;
|
static int lavc_param_gray=0;
|
||||||
@ -76,19 +72,11 @@ static int lavc_param_vstats=0;
|
|||||||
static int lavc_param_idct_algo=0;
|
static int lavc_param_idct_algo=0;
|
||||||
|
|
||||||
struct config lavc_decode_opts_conf[]={
|
struct config lavc_decode_opts_conf[]={
|
||||||
#if LIBAVCODEC_BUILD >= 4611
|
|
||||||
{"bug", &lavc_param_workaround_bugs, CONF_TYPE_INT, CONF_RANGE, -1, 99, NULL},
|
{"bug", &lavc_param_workaround_bugs, CONF_TYPE_INT, CONF_RANGE, -1, 99, NULL},
|
||||||
{"er", &lavc_param_error_resilience, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
|
{"er", &lavc_param_error_resilience, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4614
|
|
||||||
{"gray", &lavc_param_gray, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL},
|
{"gray", &lavc_param_gray, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4629
|
|
||||||
{"idct", &lavc_param_idct_algo, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
|
{"idct", &lavc_param_idct_algo, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4631
|
|
||||||
{"ec", &lavc_param_error_concealment, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
|
{"ec", &lavc_param_error_concealment, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL},
|
||||||
#endif
|
|
||||||
{"vstats", &lavc_param_vstats, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
{"vstats", &lavc_param_vstats, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||||
};
|
};
|
||||||
@ -147,33 +135,22 @@ static int init(sh_video_t *sh){
|
|||||||
if(vd_use_slices && lavc_codec->capabilities&CODEC_CAP_DRAW_HORIZ_BAND)
|
if(vd_use_slices && lavc_codec->capabilities&CODEC_CAP_DRAW_HORIZ_BAND)
|
||||||
ctx->do_slices=1;
|
ctx->do_slices=1;
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD > 4615
|
|
||||||
if(lavc_codec->capabilities&CODEC_CAP_DR1)
|
if(lavc_codec->capabilities&CODEC_CAP_DR1)
|
||||||
ctx->do_dr1=1;
|
ctx->do_dr1=1;
|
||||||
//XXX:FIXME:HACK:UGLY 422P with direct rendering is buggy cuz of that chroma stride trick ...
|
//XXX:FIXME:HACK:UGLY 422P with direct rendering is buggy cuz of that chroma stride trick ...
|
||||||
if(sh->format == mmioFOURCC('H','F','Y','U'))
|
if(sh->format == mmioFOURCC('H','F','Y','U'))
|
||||||
ctx->do_dr1=0;
|
ctx->do_dr1=0;
|
||||||
#endif
|
|
||||||
ctx->b_age= ctx->ip_age[0]= ctx->ip_age[1]= 256*256*256*64;
|
ctx->b_age= ctx->ip_age[0]= ctx->ip_age[1]= 256*256*256*64;
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4641
|
|
||||||
ctx->pic = avcodec_alloc_picture();
|
ctx->pic = avcodec_alloc_picture();
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4624
|
|
||||||
ctx->avctx = avcodec_alloc_context();
|
ctx->avctx = avcodec_alloc_context();
|
||||||
#else
|
|
||||||
ctx->avctx = malloc(sizeof(AVCodecContext));
|
|
||||||
memset(ctx->avctx, 0, sizeof(AVCodecContext));
|
|
||||||
#endif
|
|
||||||
avctx = ctx->avctx;
|
avctx = ctx->avctx;
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD > 4615
|
|
||||||
if(ctx->do_dr1){
|
if(ctx->do_dr1){
|
||||||
avctx->flags|= CODEC_FLAG_EMU_EDGE;
|
avctx->flags|= CODEC_FLAG_EMU_EDGE;
|
||||||
avctx->get_buffer= get_buffer;
|
avctx->get_buffer= get_buffer;
|
||||||
avctx->release_buffer= release_buffer;
|
avctx->release_buffer= release_buffer;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CODEC_FLAG_NOT_TRUNCATED
|
#ifdef CODEC_FLAG_NOT_TRUNCATED
|
||||||
avctx->flags|= CODEC_FLAG_NOT_TRUNCATED;
|
avctx->flags|= CODEC_FLAG_NOT_TRUNCATED;
|
||||||
@ -181,25 +158,14 @@ static int init(sh_video_t *sh){
|
|||||||
|
|
||||||
avctx->width = sh->disp_w;
|
avctx->width = sh->disp_w;
|
||||||
avctx->height= sh->disp_h;
|
avctx->height= sh->disp_h;
|
||||||
#if LIBAVCODEC_BUILD >= 4611
|
|
||||||
avctx->workaround_bugs= lavc_param_workaround_bugs;
|
avctx->workaround_bugs= lavc_param_workaround_bugs;
|
||||||
avctx->error_resilience= lavc_param_error_resilience;
|
avctx->error_resilience= lavc_param_error_resilience;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4614
|
|
||||||
if(lavc_param_gray) avctx->flags|= CODEC_FLAG_GRAY;
|
if(lavc_param_gray) avctx->flags|= CODEC_FLAG_GRAY;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4628
|
|
||||||
avctx->fourcc= sh->format;
|
avctx->fourcc= sh->format;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4629
|
|
||||||
avctx->idct_algo= lavc_param_idct_algo;
|
avctx->idct_algo= lavc_param_idct_algo;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4631
|
|
||||||
avctx->error_concealment= lavc_param_error_concealment;
|
avctx->error_concealment= lavc_param_error_concealment;
|
||||||
#endif
|
|
||||||
|
|
||||||
mp_dbg(MSGT_DECVIDEO,MSGL_DBG2,"libavcodec.size: %d x %d\n",avctx->width,avctx->height);
|
mp_dbg(MSGT_DECVIDEO,MSGL_DBG2,"libavcodec.size: %d x %d\n",avctx->width,avctx->height);
|
||||||
#if LIBAVCODEC_BUILD >= 4605
|
|
||||||
/* AVRn stores huffman table in AVI header */
|
/* AVRn stores huffman table in AVI header */
|
||||||
/* Pegasus MJPEG stores it also in AVI header, but it uses the common
|
/* Pegasus MJPEG stores it also in AVI header, but it uses the common
|
||||||
MJPG fourcc :( */
|
MJPG fourcc :( */
|
||||||
@ -224,7 +190,6 @@ static int init(sh_video_t *sh){
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
if( sh->format == mmioFOURCC('R', 'V', '1', '0')
|
if( sh->format == mmioFOURCC('R', 'V', '1', '0')
|
||||||
|| sh->format == mmioFOURCC('R', 'V', '1', '3')){
|
|| sh->format == mmioFOURCC('R', 'V', '1', '3')){
|
||||||
avctx->extradata_size= 8;
|
avctx->extradata_size= 8;
|
||||||
@ -257,10 +222,8 @@ static int init(sh_video_t *sh){
|
|||||||
memcpy(avctx->extradata, sh->bih+1, avctx->extradata_size);
|
memcpy(avctx->extradata, sh->bih+1, avctx->extradata_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4639
|
|
||||||
if(sh->bih)
|
if(sh->bih)
|
||||||
avctx->bits_per_sample= sh->bih->biBitCount;
|
avctx->bits_per_sample= sh->bih->biBitCount;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* open it */
|
/* open it */
|
||||||
if (avcodec_open(avctx, lavc_codec) < 0) {
|
if (avcodec_open(avctx, lavc_codec) < 0) {
|
||||||
@ -280,16 +243,12 @@ static void uninit(sh_video_t *sh){
|
|||||||
if (avcodec_close(avctx) < 0)
|
if (avcodec_close(avctx) < 0)
|
||||||
mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantCloseCodec);
|
mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantCloseCodec);
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4605
|
|
||||||
if (avctx->extradata_size)
|
if (avctx->extradata_size)
|
||||||
free(avctx->extradata);
|
free(avctx->extradata);
|
||||||
avctx->extradata=NULL;
|
avctx->extradata=NULL;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4630
|
|
||||||
if(avctx->slice_offset!=NULL)
|
if(avctx->slice_offset!=NULL)
|
||||||
free(avctx->slice_offset);
|
free(avctx->slice_offset);
|
||||||
avctx->slice_offset=NULL;
|
avctx->slice_offset=NULL;
|
||||||
#endif
|
|
||||||
|
|
||||||
if (avctx)
|
if (avctx)
|
||||||
free(avctx);
|
free(avctx);
|
||||||
@ -306,18 +265,14 @@ static void draw_slice(struct AVCodecContext *s,
|
|||||||
int stride[3];
|
int stride[3];
|
||||||
int start=0, i;
|
int start=0, i;
|
||||||
int skip_stride= (s->width+15)>>4;
|
int skip_stride= (s->width+15)>>4;
|
||||||
#if LIBAVCODEC_BUILD >= 4641
|
|
||||||
UINT8 *skip= &s->coded_picture->mbskip_table[(y>>4)*skip_stride];
|
UINT8 *skip= &s->coded_picture->mbskip_table[(y>>4)*skip_stride];
|
||||||
int threshold= s->coded_picture->age;
|
int threshold= s->coded_picture->age;
|
||||||
#endif
|
|
||||||
|
|
||||||
stride[0]=linesize;
|
stride[0]=linesize;
|
||||||
#if LIBAVCODEC_BUILD >= 4641
|
|
||||||
if(s->coded_picture->linesize[1]){
|
if(s->coded_picture->linesize[1]){
|
||||||
stride[1]= s->coded_picture->linesize[1];
|
stride[1]= s->coded_picture->linesize[1];
|
||||||
stride[2]= s->coded_picture->linesize[2];
|
stride[2]= s->coded_picture->linesize[2];
|
||||||
}else
|
}else
|
||||||
#endif
|
|
||||||
stride[1]=stride[2]=stride[0]/2;
|
stride[1]=stride[2]=stride[0]/2;
|
||||||
#if 0
|
#if 0
|
||||||
if(s->pict_type!=B_TYPE){
|
if(s->pict_type!=B_TYPE){
|
||||||
@ -348,24 +303,18 @@ static int init_vo(sh_video_t *sh){
|
|||||||
avctx->height != sh->disp_h ||
|
avctx->height != sh->disp_h ||
|
||||||
!ctx->vo_inited)
|
!ctx->vo_inited)
|
||||||
{
|
{
|
||||||
#if LIBAVCODEC_BUILD >= 4640
|
|
||||||
mp_dbg(MSGT_DECVIDEO, MSGL_DBG2, "aspect_ratio: %d\n", avctx->aspect_ratio);
|
mp_dbg(MSGT_DECVIDEO, MSGL_DBG2, "aspect_ratio: %d\n", avctx->aspect_ratio);
|
||||||
sh->aspect =
|
sh->aspect =
|
||||||
ctx->last_aspect = avctx->aspect_ratio;
|
ctx->last_aspect = avctx->aspect_ratio;
|
||||||
#endif
|
|
||||||
sh->disp_w = avctx->width;
|
sh->disp_w = avctx->width;
|
||||||
sh->disp_h = avctx->height;
|
sh->disp_h = avctx->height;
|
||||||
ctx->vo_inited=1;
|
ctx->vo_inited=1;
|
||||||
switch(avctx->pix_fmt){
|
switch(avctx->pix_fmt){
|
||||||
#if LIBAVCODEC_BUILD >= 4615
|
|
||||||
case PIX_FMT_YUV410P: ctx->best_csp=IMGFMT_YVU9;break; //svq1
|
case PIX_FMT_YUV410P: ctx->best_csp=IMGFMT_YVU9;break; //svq1
|
||||||
#endif
|
|
||||||
case PIX_FMT_YUV420P: ctx->best_csp=IMGFMT_YV12;break; //mpegs
|
case PIX_FMT_YUV420P: ctx->best_csp=IMGFMT_YV12;break; //mpegs
|
||||||
case PIX_FMT_YUV422P: ctx->best_csp=IMGFMT_422P;break; //mjpeg / huffyuv
|
case PIX_FMT_YUV422P: ctx->best_csp=IMGFMT_422P;break; //mjpeg / huffyuv
|
||||||
case PIX_FMT_YUV444P: ctx->best_csp=IMGFMT_444P;break; //???
|
case PIX_FMT_YUV444P: ctx->best_csp=IMGFMT_444P;break; //???
|
||||||
#if LIBAVCODEC_BUILD >= 4631
|
|
||||||
case PIX_FMT_YUV411P: ctx->best_csp=IMGFMT_411P;break; //dv ntsc
|
case PIX_FMT_YUV411P: ctx->best_csp=IMGFMT_411P;break; //dv ntsc
|
||||||
#endif
|
|
||||||
case PIX_FMT_YUV422: ctx->best_csp=IMGFMT_YUY2;break; //huffyuv perhaps in the future
|
case PIX_FMT_YUV422: ctx->best_csp=IMGFMT_YUY2;break; //huffyuv perhaps in the future
|
||||||
case PIX_FMT_BGR24 : ctx->best_csp=IMGFMT_BGR24;break; //huffyuv
|
case PIX_FMT_BGR24 : ctx->best_csp=IMGFMT_BGR24;break; //huffyuv
|
||||||
case PIX_FMT_BGRA32: ctx->best_csp=IMGFMT_BGR32;break; //huffyuv
|
case PIX_FMT_BGRA32: ctx->best_csp=IMGFMT_BGR32;break; //huffyuv
|
||||||
@ -380,7 +329,6 @@ static int init_vo(sh_video_t *sh){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4641
|
|
||||||
static int get_buffer(AVCodecContext *avctx, AVVideoFrame *pic){
|
static int get_buffer(AVCodecContext *avctx, AVVideoFrame *pic){
|
||||||
sh_video_t * sh = avctx->opaque;
|
sh_video_t * sh = avctx->opaque;
|
||||||
vd_ffmpeg_ctx *ctx = sh->context;
|
vd_ffmpeg_ctx *ctx = sh->context;
|
||||||
@ -409,13 +357,11 @@ static int get_buffer(AVCodecContext *avctx, AVVideoFrame *pic){
|
|||||||
flags|= MP_IMGFLAG_PRESERVE|MP_IMGFLAG_READABLE
|
flags|= MP_IMGFLAG_PRESERVE|MP_IMGFLAG_READABLE
|
||||||
| (ctx->do_slices ? MP_IMGFLAG_DRAW_CALLBACK : 0);
|
| (ctx->do_slices ? MP_IMGFLAG_DRAW_CALLBACK : 0);
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD > 4616
|
|
||||||
if(avctx->has_b_frames){
|
if(avctx->has_b_frames){
|
||||||
type= MP_IMGTYPE_IPB;
|
type= MP_IMGTYPE_IPB;
|
||||||
}else{
|
}else{
|
||||||
type= MP_IMGTYPE_IP;
|
type= MP_IMGTYPE_IP;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
mp_msg(MSGT_DECVIDEO,MSGL_DBG2, type== MP_IMGTYPE_IPB ? "using IPB\n" : "using IP\n");
|
mp_msg(MSGT_DECVIDEO,MSGL_DBG2, type== MP_IMGTYPE_IPB ? "using IPB\n" : "using IP\n");
|
||||||
|
|
||||||
mpi= mpcodecs_get_image(sh,type, flags,
|
mpi= mpcodecs_get_image(sh,type, flags,
|
||||||
@ -489,7 +435,6 @@ static void release_buffer(struct AVCodecContext *avctx, AVVideoFrame *pic){
|
|||||||
}
|
}
|
||||||
//printf("R%X %X\n", pic->linesize[0], pic->data[0]);
|
//printf("R%X %X\n", pic->linesize[0], pic->data[0]);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
// copypaste from demux_real.c - it should match to get it working!
|
// copypaste from demux_real.c - it should match to get it working!
|
||||||
//FIXME put into some header
|
//FIXME put into some header
|
||||||
@ -524,11 +469,8 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD > 4603
|
|
||||||
avctx->hurry_up=(flags&3)?((flags&2)?2:1):0;
|
avctx->hurry_up=(flags&3)?((flags&2)?2:1):0;
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4630
|
|
||||||
// if(sh->ds->demuxer->type == DEMUXER_TYPE_REAL){
|
// if(sh->ds->demuxer->type == DEMUXER_TYPE_REAL){
|
||||||
if( sh->format == mmioFOURCC('R', 'V', '1', '0')
|
if( sh->format == mmioFOURCC('R', 'V', '1', '0')
|
||||||
|| sh->format == mmioFOURCC('R', 'V', '1', '3'))
|
|| sh->format == mmioFOURCC('R', 'V', '1', '3'))
|
||||||
@ -547,7 +489,6 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
|
|||||||
len=hdr->len;
|
len=hdr->len;
|
||||||
data+= sizeof(dp_hdr_t);
|
data+= sizeof(dp_hdr_t);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
ret = avcodec_decode_video(avctx, pic,
|
ret = avcodec_decode_video(avctx, pic,
|
||||||
&got_picture, data, len);
|
&got_picture, data, len);
|
||||||
@ -607,11 +548,9 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
|
|||||||
|
|
||||||
if(init_vo(sh)<0) return NULL;
|
if(init_vo(sh)<0) return NULL;
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD > 4615
|
|
||||||
if(dr1 && pic->opaque){
|
if(dr1 && pic->opaque){
|
||||||
mpi= (mp_image_t*)pic->opaque;
|
mpi= (mp_image_t*)pic->opaque;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if(!mpi && ctx->convert){
|
if(!mpi && ctx->convert){
|
||||||
// do yuv422p -> yuy2 conversion:
|
// do yuv422p -> yuy2 conversion:
|
||||||
@ -648,11 +587,9 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* to comfirm with newer lavc style */
|
/* to comfirm with newer lavc style */
|
||||||
#if LIBAVCODEC_BUILD >= 4641
|
|
||||||
mpi->qscale =pic->qscale_table;
|
mpi->qscale =pic->qscale_table;
|
||||||
mpi->qstride=pic->qstride;
|
mpi->qstride=pic->qstride;
|
||||||
mpi->pict_type=pic->pict_type;
|
mpi->pict_type=pic->pict_type;
|
||||||
#endif
|
|
||||||
|
|
||||||
return mpi;
|
return mpi;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ extern void mencoder_write_chunk(aviwrite_stream_t *s,int len,unsigned int flags
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD < 4641
|
#if LIBAVCODEC_BUILD < 4641
|
||||||
#error your version of libavcodec is too old, get a newer one, and dont send a bugreport, THIS IS NO BUG
|
#error we dont support libavcodec prior to build 4641, get the latest libavcodec CVS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD < 4624
|
#if LIBAVCODEC_BUILD < 4624
|
||||||
@ -83,9 +83,7 @@ static float lavc_param_rc_initial_cplx=0;
|
|||||||
static int lavc_param_mpeg_quant=0;
|
static int lavc_param_mpeg_quant=0;
|
||||||
static int lavc_param_fdct=0;
|
static int lavc_param_fdct=0;
|
||||||
static int lavc_param_idct=0;
|
static int lavc_param_idct=0;
|
||||||
#if LIBAVCODEC_BUILD >= 4623
|
|
||||||
static char* lavc_param_aspect = NULL;
|
static char* lavc_param_aspect = NULL;
|
||||||
#endif
|
|
||||||
static float lavc_param_lumi_masking= 0.0;
|
static float lavc_param_lumi_masking= 0.0;
|
||||||
static float lavc_param_dark_masking= 0.0;
|
static float lavc_param_dark_masking= 0.0;
|
||||||
static float lavc_param_temporal_cplx_masking= 0.0;
|
static float lavc_param_temporal_cplx_masking= 0.0;
|
||||||
@ -115,26 +113,17 @@ struct config lavcopts_conf[]={
|
|||||||
{"vb_qfactor", &lavc_param_vb_qfactor, CONF_TYPE_FLOAT, CONF_RANGE, -31.0, 31.0, NULL},
|
{"vb_qfactor", &lavc_param_vb_qfactor, CONF_TYPE_FLOAT, CONF_RANGE, -31.0, 31.0, NULL},
|
||||||
{"vmax_b_frames", &lavc_param_vmax_b_frames, CONF_TYPE_INT, CONF_RANGE, 0, FF_MAX_B_FRAMES, NULL},
|
{"vmax_b_frames", &lavc_param_vmax_b_frames, CONF_TYPE_INT, CONF_RANGE, 0, FF_MAX_B_FRAMES, NULL},
|
||||||
{"vpass", &lavc_param_vpass, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
|
{"vpass", &lavc_param_vpass, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
|
||||||
#if LIBAVCODEC_BUILD < 4620
|
|
||||||
{"vrc_strategy", &lavc_param_vrc_strategy, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
|
{"vrc_strategy", &lavc_param_vrc_strategy, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
|
||||||
#endif
|
|
||||||
{"vb_strategy", &lavc_param_vb_strategy, CONF_TYPE_INT, CONF_RANGE, 0, 1, NULL},
|
{"vb_strategy", &lavc_param_vb_strategy, CONF_TYPE_INT, CONF_RANGE, 0, 1, NULL},
|
||||||
#ifdef CODEC_FLAG_PART
|
|
||||||
{"vb_qoffset", &lavc_param_vb_qoffset, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 31.0, NULL},
|
{"vb_qoffset", &lavc_param_vb_qoffset, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 31.0, NULL},
|
||||||
{"vlelim", &lavc_param_luma_elim_threshold, CONF_TYPE_INT, CONF_RANGE, -99, 99, NULL},
|
{"vlelim", &lavc_param_luma_elim_threshold, CONF_TYPE_INT, CONF_RANGE, -99, 99, NULL},
|
||||||
{"vcelim", &lavc_param_chroma_elim_threshold, CONF_TYPE_INT, CONF_RANGE, -99, 99, NULL},
|
{"vcelim", &lavc_param_chroma_elim_threshold, CONF_TYPE_INT, CONF_RANGE, -99, 99, NULL},
|
||||||
{"vpsize", &lavc_param_packet_size, CONF_TYPE_INT, CONF_RANGE, 0, 100000000, NULL},
|
{"vpsize", &lavc_param_packet_size, CONF_TYPE_INT, CONF_RANGE, 0, 100000000, NULL},
|
||||||
{"vstrict", &lavc_param_strict, CONF_TYPE_INT, CONF_RANGE, -99, 99, NULL},
|
{"vstrict", &lavc_param_strict, CONF_TYPE_INT, CONF_RANGE, -99, 99, NULL},
|
||||||
{"vdpart", &lavc_param_data_partitioning, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL},
|
{"vdpart", &lavc_param_data_partitioning, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL},
|
||||||
#endif
|
|
||||||
{"keyint", &lavc_param_keyint, CONF_TYPE_INT, 0, 0, 0, NULL},
|
{"keyint", &lavc_param_keyint, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||||
#if LIBAVCODEC_BUILD >= 4614
|
|
||||||
{"gray", &lavc_param_gray, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL},
|
{"gray", &lavc_param_gray, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4619
|
|
||||||
{"mpeg_quant", &lavc_param_mpeg_quant, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
{"mpeg_quant", &lavc_param_mpeg_quant, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4620
|
|
||||||
{"vi_qfactor", &lavc_param_vi_qfactor, CONF_TYPE_FLOAT, CONF_RANGE, -31.0, 31.0, NULL},
|
{"vi_qfactor", &lavc_param_vi_qfactor, CONF_TYPE_FLOAT, CONF_RANGE, -31.0, 31.0, NULL},
|
||||||
{"vi_qoffset", &lavc_param_vi_qoffset, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 31.0, NULL},
|
{"vi_qoffset", &lavc_param_vi_qoffset, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 31.0, NULL},
|
||||||
{"vqsquish", &lavc_param_rc_qsquish, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 99.0, NULL},
|
{"vqsquish", &lavc_param_rc_qsquish, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 99.0, NULL},
|
||||||
@ -147,33 +136,18 @@ struct config lavcopts_conf[]={
|
|||||||
{"vrc_buf_size", &lavc_param_rc_min_rate, CONF_TYPE_INT, CONF_RANGE, 4, 24000000, NULL},
|
{"vrc_buf_size", &lavc_param_rc_min_rate, CONF_TYPE_INT, CONF_RANGE, 4, 24000000, NULL},
|
||||||
{"vrc_buf_aggressivity", &lavc_param_rc_buffer_aggressivity, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 99.0, NULL},
|
{"vrc_buf_aggressivity", &lavc_param_rc_buffer_aggressivity, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 99.0, NULL},
|
||||||
{"vrc_init_cplx", &lavc_param_rc_initial_cplx, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 9999999.0, NULL},
|
{"vrc_init_cplx", &lavc_param_rc_initial_cplx, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 9999999.0, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4621
|
|
||||||
{"vfdct", &lavc_param_fdct, CONF_TYPE_INT, CONF_RANGE, 0, 10, NULL},
|
{"vfdct", &lavc_param_fdct, CONF_TYPE_INT, CONF_RANGE, 0, 10, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4623
|
|
||||||
{"aspect", &lavc_param_aspect, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
{"aspect", &lavc_param_aspect, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4625
|
|
||||||
{"lumi_mask", &lavc_param_lumi_masking, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
{"lumi_mask", &lavc_param_lumi_masking, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
||||||
{"tcplx_mask", &lavc_param_temporal_cplx_masking, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
{"tcplx_mask", &lavc_param_temporal_cplx_masking, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
||||||
{"scplx_mask", &lavc_param_spatial_cplx_masking, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
{"scplx_mask", &lavc_param_spatial_cplx_masking, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
||||||
{"p_mask", &lavc_param_p_masking, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
{"p_mask", &lavc_param_p_masking, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
||||||
{"naq", &lavc_param_normalize_aqp, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
{"naq", &lavc_param_normalize_aqp, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4626
|
|
||||||
{"dark_mask", &lavc_param_dark_masking, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
{"dark_mask", &lavc_param_dark_masking, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4627
|
|
||||||
{"ildct", &lavc_param_interlaced_dct, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
{"ildct", &lavc_param_interlaced_dct, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4629
|
|
||||||
{"idct", &lavc_param_idct, CONF_TYPE_INT, CONF_RANGE, 0, 20, NULL},
|
{"idct", &lavc_param_idct, CONF_TYPE_INT, CONF_RANGE, 0, 20, NULL},
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4639
|
|
||||||
{"pred", &lavc_param_prediction_method, CONF_TYPE_INT, CONF_RANGE, 0, 20, NULL},
|
{"pred", &lavc_param_prediction_method, CONF_TYPE_INT, CONF_RANGE, 0, 20, NULL},
|
||||||
{"format", &lavc_param_format, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
{"format", &lavc_param_format, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||||
#endif
|
|
||||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
@ -223,15 +197,12 @@ static int config(struct vf_instance_s* vf,
|
|||||||
lavc_venc_context->b_quant_factor= lavc_param_vb_qfactor;
|
lavc_venc_context->b_quant_factor= lavc_param_vb_qfactor;
|
||||||
lavc_venc_context->rc_strategy= lavc_param_vrc_strategy;
|
lavc_venc_context->rc_strategy= lavc_param_vrc_strategy;
|
||||||
lavc_venc_context->b_frame_strategy= lavc_param_vb_strategy;
|
lavc_venc_context->b_frame_strategy= lavc_param_vb_strategy;
|
||||||
#ifdef CODEC_FLAG_PART
|
|
||||||
lavc_venc_context->b_quant_offset= lavc_param_vb_qoffset;
|
lavc_venc_context->b_quant_offset= lavc_param_vb_qoffset;
|
||||||
lavc_venc_context->luma_elim_threshold= lavc_param_luma_elim_threshold;
|
lavc_venc_context->luma_elim_threshold= lavc_param_luma_elim_threshold;
|
||||||
lavc_venc_context->chroma_elim_threshold= lavc_param_chroma_elim_threshold;
|
lavc_venc_context->chroma_elim_threshold= lavc_param_chroma_elim_threshold;
|
||||||
lavc_venc_context->rtp_payload_size= lavc_param_packet_size;
|
lavc_venc_context->rtp_payload_size= lavc_param_packet_size;
|
||||||
if(lavc_param_packet_size )lavc_venc_context->rtp_mode=1;
|
if(lavc_param_packet_size )lavc_venc_context->rtp_mode=1;
|
||||||
lavc_venc_context->strict_std_compliance= lavc_param_strict;
|
lavc_venc_context->strict_std_compliance= lavc_param_strict;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4620
|
|
||||||
lavc_venc_context->i_quant_factor= lavc_param_vi_qfactor;
|
lavc_venc_context->i_quant_factor= lavc_param_vi_qfactor;
|
||||||
lavc_venc_context->i_quant_offset= lavc_param_vi_qoffset;
|
lavc_venc_context->i_quant_offset= lavc_param_vi_qoffset;
|
||||||
lavc_venc_context->rc_qsquish= lavc_param_rc_qsquish;
|
lavc_venc_context->rc_qsquish= lavc_param_rc_qsquish;
|
||||||
@ -268,30 +239,18 @@ static int config(struct vf_instance_s* vf,
|
|||||||
if(p) p++;
|
if(p) p++;
|
||||||
}
|
}
|
||||||
lavc_venc_context->rc_override_count=i;
|
lavc_venc_context->rc_override_count=i;
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4619
|
|
||||||
lavc_venc_context->mpeg_quant=lavc_param_mpeg_quant;
|
lavc_venc_context->mpeg_quant=lavc_param_mpeg_quant;
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4621
|
|
||||||
lavc_venc_context->dct_algo= lavc_param_fdct;
|
lavc_venc_context->dct_algo= lavc_param_fdct;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4629
|
|
||||||
lavc_venc_context->idct_algo= lavc_param_idct;
|
lavc_venc_context->idct_algo= lavc_param_idct;
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4625
|
|
||||||
lavc_venc_context->lumi_masking= lavc_param_lumi_masking;
|
lavc_venc_context->lumi_masking= lavc_param_lumi_masking;
|
||||||
lavc_venc_context->temporal_cplx_masking= lavc_param_temporal_cplx_masking;
|
lavc_venc_context->temporal_cplx_masking= lavc_param_temporal_cplx_masking;
|
||||||
lavc_venc_context->spatial_cplx_masking= lavc_param_spatial_cplx_masking;
|
lavc_venc_context->spatial_cplx_masking= lavc_param_spatial_cplx_masking;
|
||||||
lavc_venc_context->p_masking= lavc_param_p_masking;
|
lavc_venc_context->p_masking= lavc_param_p_masking;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4626
|
|
||||||
lavc_venc_context->dark_masking= lavc_param_dark_masking;
|
lavc_venc_context->dark_masking= lavc_param_dark_masking;
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4640
|
|
||||||
if (lavc_param_aspect != NULL)
|
if (lavc_param_aspect != NULL)
|
||||||
{
|
{
|
||||||
int par_width, par_height, e;
|
int par_width, par_height, e;
|
||||||
@ -313,7 +272,6 @@ static int config(struct vf_instance_s* vf,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/* keyframe interval */
|
/* keyframe interval */
|
||||||
if (lavc_param_keyint >= 0) /* != -1 */
|
if (lavc_param_keyint >= 0) /* != -1 */
|
||||||
@ -336,20 +294,11 @@ static int config(struct vf_instance_s* vf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
lavc_venc_context->flags|= lavc_param_v4mv ? CODEC_FLAG_4MV : 0;
|
lavc_venc_context->flags|= lavc_param_v4mv ? CODEC_FLAG_4MV : 0;
|
||||||
#ifdef CODEC_FLAG_PART
|
|
||||||
lavc_venc_context->flags|= lavc_param_data_partitioning;
|
lavc_venc_context->flags|= lavc_param_data_partitioning;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4614
|
|
||||||
if(lavc_param_gray) lavc_venc_context->flags|= CODEC_FLAG_GRAY;
|
if(lavc_param_gray) lavc_venc_context->flags|= CODEC_FLAG_GRAY;
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4625
|
|
||||||
if(lavc_param_normalize_aqp) lavc_venc_context->flags|= CODEC_FLAG_NORMALIZE_AQP;
|
if(lavc_param_normalize_aqp) lavc_venc_context->flags|= CODEC_FLAG_NORMALIZE_AQP;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4627
|
|
||||||
if(lavc_param_interlaced_dct) lavc_venc_context->flags|= CODEC_FLAG_INTERLACED_DCT;
|
if(lavc_param_interlaced_dct) lavc_venc_context->flags|= CODEC_FLAG_INTERLACED_DCT;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4639
|
|
||||||
lavc_venc_context->prediction_method= lavc_param_prediction_method;
|
lavc_venc_context->prediction_method= lavc_param_prediction_method;
|
||||||
if(!strcasecmp(lavc_param_format, "YV12"))
|
if(!strcasecmp(lavc_param_format, "YV12"))
|
||||||
lavc_venc_context->pix_fmt= PIX_FMT_YUV420P;
|
lavc_venc_context->pix_fmt= PIX_FMT_YUV420P;
|
||||||
@ -359,22 +308,18 @@ static int config(struct vf_instance_s* vf,
|
|||||||
mp_msg(MSGT_MENCODER,MSGL_ERR,"%s is not a supported format\n", lavc_param_format);
|
mp_msg(MSGT_MENCODER,MSGL_ERR,"%s is not a supported format\n", lavc_param_format);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
/* lavc internal 2pass bitrate control */
|
/* lavc internal 2pass bitrate control */
|
||||||
switch(lavc_param_vpass){
|
switch(lavc_param_vpass){
|
||||||
case 1:
|
case 1:
|
||||||
lavc_venc_context->flags|= CODEC_FLAG_PASS1;
|
lavc_venc_context->flags|= CODEC_FLAG_PASS1;
|
||||||
#if LIBAVCODEC_BUILD >= 4620
|
|
||||||
stats_file= fopen(passtmpfile, "w");
|
stats_file= fopen(passtmpfile, "w");
|
||||||
if(stats_file==NULL){
|
if(stats_file==NULL){
|
||||||
mp_msg(MSGT_MENCODER,MSGL_ERR,"2pass failed: filename=%s\n", passtmpfile);
|
mp_msg(MSGT_MENCODER,MSGL_ERR,"2pass failed: filename=%s\n", passtmpfile);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
lavc_venc_context->flags|= CODEC_FLAG_PASS2;
|
lavc_venc_context->flags|= CODEC_FLAG_PASS2;
|
||||||
#if LIBAVCODEC_BUILD >= 4620
|
|
||||||
stats_file= fopen(passtmpfile, "r");
|
stats_file= fopen(passtmpfile, "r");
|
||||||
if(stats_file==NULL){
|
if(stats_file==NULL){
|
||||||
mp_msg(MSGT_MENCODER,MSGL_ERR,"2pass failed: filename=%s\n", passtmpfile);
|
mp_msg(MSGT_MENCODER,MSGL_ERR,"2pass failed: filename=%s\n", passtmpfile);
|
||||||
@ -391,16 +336,10 @@ static int config(struct vf_instance_s* vf,
|
|||||||
mp_msg(MSGT_MENCODER,MSGL_ERR,"2pass failed: reading from filename=%s\n", passtmpfile);
|
mp_msg(MSGT_MENCODER,MSGL_ERR,"2pass failed: reading from filename=%s\n", passtmpfile);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ME_ZERO
|
|
||||||
// workaround Juanjo's stupid incompatible change:
|
|
||||||
motion_estimation_method = lavc_param_vme;
|
|
||||||
#else
|
|
||||||
lavc_venc_context->me_method = ME_ZERO+lavc_param_vme;
|
lavc_venc_context->me_method = ME_ZERO+lavc_param_vme;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* fixed qscale :p */
|
/* fixed qscale :p */
|
||||||
if (lavc_param_vqscale)
|
if (lavc_param_vqscale)
|
||||||
@ -420,19 +359,15 @@ static int config(struct vf_instance_s* vf,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4620
|
|
||||||
/* free second pass buffer, its not needed anymore */
|
/* free second pass buffer, its not needed anymore */
|
||||||
if(lavc_venc_context->stats_in) free(lavc_venc_context->stats_in);
|
if(lavc_venc_context->stats_in) free(lavc_venc_context->stats_in);
|
||||||
lavc_venc_context->stats_in= NULL;
|
lavc_venc_context->stats_in= NULL;
|
||||||
#endif
|
|
||||||
#if LIBAVCODEC_BUILD >= 4639
|
|
||||||
if(lavc_venc_context->bits_per_sample)
|
if(lavc_venc_context->bits_per_sample)
|
||||||
mux_v->bih->biBitCount= lavc_venc_context->bits_per_sample;
|
mux_v->bih->biBitCount= lavc_venc_context->bits_per_sample;
|
||||||
if(lavc_venc_context->extradata_size){
|
if(lavc_venc_context->extradata_size){
|
||||||
memcpy(mux_v->bih + 1, lavc_venc_context->extradata, lavc_venc_context->extradata_size);
|
memcpy(mux_v->bih + 1, lavc_venc_context->extradata, lavc_venc_context->extradata_size);
|
||||||
mux_v->bih->biSize= sizeof(BITMAPINFOHEADER) + lavc_venc_context->extradata_size;
|
mux_v->bih->biSize= sizeof(BITMAPINFOHEADER) + lavc_venc_context->extradata_size;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -474,24 +409,20 @@ static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
|
|||||||
|
|
||||||
mencoder_write_chunk(mux_v,out_size,lavc_venc_context->coded_picture->key_frame?0x10:0);
|
mencoder_write_chunk(mux_v,out_size,lavc_venc_context->coded_picture->key_frame?0x10:0);
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4620
|
|
||||||
/* store stats if there are any */
|
/* store stats if there are any */
|
||||||
if(lavc_venc_context->stats_out && stats_file)
|
if(lavc_venc_context->stats_out && stats_file)
|
||||||
fprintf(stats_file, "%s", lavc_venc_context->stats_out);
|
fprintf(stats_file, "%s", lavc_venc_context->stats_out);
|
||||||
#endif
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void uninit(struct vf_instance_s* vf){
|
static void uninit(struct vf_instance_s* vf){
|
||||||
avcodec_close(lavc_venc_context);
|
avcodec_close(lavc_venc_context);
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD >= 4620
|
|
||||||
if(stats_file) fclose(stats_file);
|
if(stats_file) fclose(stats_file);
|
||||||
|
|
||||||
/* free rc_override */
|
/* free rc_override */
|
||||||
if(lavc_venc_context->rc_override) free(lavc_venc_context->rc_override);
|
if(lavc_venc_context->rc_override) free(lavc_venc_context->rc_override);
|
||||||
lavc_venc_context->rc_override= NULL;
|
lavc_venc_context->rc_override= NULL;
|
||||||
#endif
|
|
||||||
|
|
||||||
if(vf->priv->context) free(vf->priv->context);
|
if(vf->priv->context) free(vf->priv->context);
|
||||||
vf->priv->context= NULL;
|
vf->priv->context= NULL;
|
||||||
@ -576,12 +507,7 @@ static int vf_open(vf_instance_t *vf, char* args){
|
|||||||
}
|
}
|
||||||
|
|
||||||
vf->priv->pic = avcodec_alloc_picture();
|
vf->priv->pic = avcodec_alloc_picture();
|
||||||
#if LIBAVCODEC_BUILD >= 4624
|
|
||||||
vf->priv->context = avcodec_alloc_context();
|
vf->priv->context = avcodec_alloc_context();
|
||||||
#else
|
|
||||||
vf->priv->context = malloc(sizeof(AVCodecContext));
|
|
||||||
memset(vf->priv->context, 0, sizeof(AVCodecContext));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if LIBAVCODEC_BUILD < 4641
|
#if LIBAVCODEC_BUILD < 4641
|
||||||
#error your version of libavcodec is too old, get a newer one, and dont send a bugreport, THIS IS NO BUG
|
#error we dont support libavcodec prior to build 4641, get the latest libavcodec CVS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern int avcodec_inited;
|
extern int avcodec_inited;
|
||||||
@ -156,11 +156,7 @@ static int open(vf_instance_t *vf, char* args){
|
|||||||
if(p_quality<32){
|
if(p_quality<32){
|
||||||
// fixed qscale
|
// fixed qscale
|
||||||
lavc_venc_context.flags = CODEC_FLAG_QSCALE;
|
lavc_venc_context.flags = CODEC_FLAG_QSCALE;
|
||||||
#if LIBAVCODEC_BUILD >= 4641
|
|
||||||
vf->priv->pic->quality = (p_quality<1) ? 1 : p_quality;
|
vf->priv->pic->quality = (p_quality<1) ? 1 : p_quality;
|
||||||
#else
|
|
||||||
lavc_venc_context.quality = (p_quality<1) ? 1 : p_quality;
|
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
// fixed bitrate (in kbits)
|
// fixed bitrate (in kbits)
|
||||||
lavc_venc_context.bit_rate = 1000*p_quality;
|
lavc_venc_context.bit_rate = 1000*p_quality;
|
||||||
|
Loading…
Reference in New Issue
Block a user