summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-12-09 12:36:04 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-12-09 12:36:04 +0000
commit26e4189539de25f9607d1d4c5d0fa3c2e4e710da (patch)
tree1c3ab241a088fb92fa68c01d0a75807967db35c2 /libmpcodecs
parent67c0bb02e8bb36ca30f254feafb51dde2e167b0f (diff)
downloadmpv-26e4189539de25f9607d1d4c5d0fa3c2e4e710da.tar.bz2
mpv-26e4189539de25f9607d1d4c5d0fa3c2e4e710da.tar.xz
AVVideoFrame -> AVFrame
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8414 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/vd_ffmpeg.c41
-rw-r--r--libmpcodecs/ve_lavc.c39
-rw-r--r--libmpcodecs/vf_lavc.c19
3 files changed, 67 insertions, 32 deletions
diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c
index 10b253a0da..02231aa2b7 100644
--- a/libmpcodecs/vd_ffmpeg.c
+++ b/libmpcodecs/vd_ffmpeg.c
@@ -36,6 +36,15 @@ LIBVD_EXTERN(ffmpeg)
#error we dont support libavcodec prior to build 4641, get the latest libavcodec CVS
#endif
+#if LIBAVCODEC_BUILD < 4645
+#warning your version of libavcodec is old, u might want to get a newer one
+#endif
+
+#if LIBAVCODEC_BUILD < 4645
+#define AVFrame AVVideoFrame
+#define coded_frame coded_picture
+#endif
+
int avcodec_inited=0;
#if defined(FF_POSTPROCESS) && defined(MBR)
@@ -44,7 +53,7 @@ int quant_store[MBR+1][MBC+1];
typedef struct {
AVCodecContext *avctx;
- AVVideoFrame *pic;
+ AVFrame *pic;
float last_aspect;
int do_slices;
int do_dr1;
@@ -64,8 +73,8 @@ typedef struct {
#include "cfgparser.h"
-static int get_buffer(AVCodecContext *avctx, AVVideoFrame *pic);
-static void release_buffer(AVCodecContext *avctx, AVVideoFrame *pic);
+static int get_buffer(AVCodecContext *avctx, AVFrame *pic);
+static void release_buffer(AVCodecContext *avctx, AVFrame *pic);
static int lavc_param_workaround_bugs= FF_BUG_AUTODETECT;
static int lavc_param_error_resilience=2;
@@ -149,7 +158,11 @@ static int init(sh_video_t *sh){
ctx->do_dr1=0;
ctx->b_age= ctx->ip_age[0]= ctx->ip_age[1]= 256*256*256*64;
+#if LIBAVCODEC_BUILD >= 4645
+ ctx->pic = avcodec_alloc_frame();
+#else
ctx->pic = avcodec_alloc_picture();
+#endif
ctx->avctx = avcodec_alloc_context();
avctx = ctx->avctx;
@@ -255,8 +268,8 @@ static void uninit(sh_video_t *sh){
printf("QP: %d, count: %d\n", i, ctx->qp_stat[i]);
}
printf("Arithmetic mean of QP: %2.4f, Harmonic mean of QP: %2.4f\n",
- ctx->qp_sum / avctx->coded_picture->coded_picture_number,
- 1.0/(ctx->inv_qp_sum / avctx->coded_picture->coded_picture_number)
+ ctx->qp_sum / avctx->coded_frame->coded_picture_number,
+ 1.0/(ctx->inv_qp_sum / avctx->coded_frame->coded_picture_number)
);
}
@@ -285,13 +298,13 @@ static void draw_slice(struct AVCodecContext *s,
int stride[3];
int start=0, i;
int skip_stride= (s->width+15)>>4;
- UINT8 *skip= &s->coded_picture->mbskip_table[(y>>4)*skip_stride];
- int threshold= s->coded_picture->age;
+ UINT8 *skip= &s->coded_frame->mbskip_table[(y>>4)*skip_stride];
+ int threshold= s->coded_frame->age;
stride[0]=linesize;
- if(s->coded_picture->linesize[1]){
- stride[1]= s->coded_picture->linesize[1];
- stride[2]= s->coded_picture->linesize[2];
+ if(s->coded_frame->linesize[1]){
+ stride[1]= s->coded_frame->linesize[1];
+ stride[2]= s->coded_frame->linesize[2];
}else
stride[1]=stride[2]=stride[0]/2;
#if 0
@@ -349,7 +362,7 @@ static int init_vo(sh_video_t *sh){
return 0;
}
-static int get_buffer(AVCodecContext *avctx, AVVideoFrame *pic){
+static int get_buffer(AVCodecContext *avctx, AVFrame *pic){
sh_video_t * sh = avctx->opaque;
vd_ffmpeg_ctx *ctx = sh->context;
mp_image_t* mpi=NULL;
@@ -449,7 +462,7 @@ else
return 0;
}
-static void release_buffer(struct AVCodecContext *avctx, AVVideoFrame *pic){
+static void release_buffer(struct AVCodecContext *avctx, AVFrame *pic){
int i;
#if LIBAVCODEC_BUILD >= 4644
@@ -476,7 +489,7 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
int got_picture=0;
int ret;
vd_ffmpeg_ctx *ctx = sh->context;
- AVVideoFrame *pic= ctx->pic;
+ AVFrame *pic= ctx->pic;
AVCodecContext *avctx = ctx->avctx;
mp_image_t* mpi=NULL;
int dr1= ctx->do_dr1;
@@ -528,7 +541,7 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
static long long int all_len=0;
static int frame_number=0;
static double all_frametime=0.0;
- AVVideoFrame *pic= avctx->coded_picture;
+ AVFrame *pic= avctx->coded_frame;
if(!fvstats) {
time_t today2;
diff --git a/libmpcodecs/ve_lavc.c b/libmpcodecs/ve_lavc.c
index ab2f4c0c9e..5cd526f152 100644
--- a/libmpcodecs/ve_lavc.c
+++ b/libmpcodecs/ve_lavc.c
@@ -41,10 +41,15 @@ extern void mencoder_write_chunk(aviwrite_stream_t *s,int len,unsigned int flags
#error we dont support libavcodec prior to build 4641, get the latest libavcodec CVS
#endif
-#if LIBAVCODEC_BUILD < 4624
+#if LIBAVCODEC_BUILD < 4645
#warning your version of libavcodec is old, u might want to get a newer one
#endif
+#if LIBAVCODEC_BUILD < 4645
+#define AVFrame AVVideoFrame
+#define coded_frame coded_picture
+#endif
+
extern int avcodec_inited;
/* video options */
@@ -121,7 +126,7 @@ struct config lavcopts_conf[]={
{"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},
{"vrc_strategy", &lavc_param_vrc_strategy, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
- {"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, 10, 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},
{"vcelim", &lavc_param_chroma_elim_threshold, CONF_TYPE_INT, CONF_RANGE, -99, 99, NULL},
@@ -168,7 +173,7 @@ struct config lavcopts_conf[]={
struct vf_priv_s {
aviwrite_stream_t* mux;
AVCodecContext *context;
- AVVideoFrame *pic;
+ AVFrame *pic;
AVCodec *codec;
FILE *stats_file;
};
@@ -420,7 +425,7 @@ static double psnr(double d){
static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
const char pict_type_char[5]= {'?', 'I', 'P', 'B', 'S'};
int out_size;
- AVVideoFrame *pic= vf->priv->pic;
+ AVFrame *pic= vf->priv->pic;
pic->data[0]=mpi->planes[0];
pic->data[1]=mpi->planes[1];
@@ -432,8 +437,8 @@ static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
out_size = avcodec_encode_video(lavc_venc_context, mux_v->buffer, mux_v->buffer_size,
pic);
- 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_frame->key_frame?0x10:0);
+
#if LIBAVCODEC_BUILD >= 4643
/* store psnr / pict size / type / qscale */
if(lavc_param_psnr){
@@ -442,7 +447,7 @@ static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
static long long int all_len=0;
static int frame_number=0;
static double all_frametime=0.0;
- AVVideoFrame *pic= lavc_venc_context->coded_picture;
+ AVFrame *pic= lavc_venc_context->coded_frame;
double f= lavc_venc_context->width*lavc_venc_context->height*255.0*255.0;
if(!fvstats) {
@@ -461,14 +466,14 @@ static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
}
fprintf(fvstats, "%6d, %2.2f, %6d, %2.2f, %2.2f, %2.2f, %2.2f %c\n",
- lavc_venc_context->coded_picture->coded_picture_number,
- lavc_venc_context->coded_picture->quality,
+ lavc_venc_context->coded_frame->coded_picture_number,
+ lavc_venc_context->coded_frame->quality,
out_size,
- psnr(lavc_venc_context->coded_picture->error[0]/f),
- psnr(lavc_venc_context->coded_picture->error[1]*4/f),
- psnr(lavc_venc_context->coded_picture->error[2]*4/f),
- psnr((lavc_venc_context->coded_picture->error[0]+lavc_venc_context->coded_picture->error[1]+lavc_venc_context->coded_picture->error[2])/(f*1.5)),
- pict_type_char[lavc_venc_context->coded_picture->pict_type]
+ psnr(lavc_venc_context->coded_frame->error[0]/f),
+ psnr(lavc_venc_context->coded_frame->error[1]*4/f),
+ psnr(lavc_venc_context->coded_frame->error[2]*4/f),
+ psnr((lavc_venc_context->coded_frame->error[0]+lavc_venc_context->coded_frame->error[1]+lavc_venc_context->coded_frame->error[2])/(f*1.5)),
+ pict_type_char[lavc_venc_context->coded_frame->pict_type]
);
}
#endif
@@ -485,7 +490,7 @@ static void uninit(struct vf_instance_s* vf){
if(lavc_param_psnr){
double f= lavc_venc_context->width*lavc_venc_context->height*255.0*255.0;
- f*= lavc_venc_context->coded_picture->coded_picture_number;
+ f*= lavc_venc_context->coded_frame->coded_picture_number;
printf("PSNR: Y:%2.2f, Cb:%2.2f, Cr:%2.2f, All:%2.2f\n",
psnr(lavc_venc_context->error[0]/f),
@@ -586,7 +591,11 @@ static int vf_open(vf_instance_t *vf, char* args){
return 0;
}
+#if LIBAVCODEC_BUILD >= 4645
+ vf->priv->pic = avcodec_alloc_frame();
+#else
vf->priv->pic = avcodec_alloc_picture();
+#endif
vf->priv->context = avcodec_alloc_context();
return 1;
diff --git a/libmpcodecs/vf_lavc.c b/libmpcodecs/vf_lavc.c
index fe47c8f90c..d722c954b5 100644
--- a/libmpcodecs/vf_lavc.c
+++ b/libmpcodecs/vf_lavc.c
@@ -25,13 +25,22 @@
#error we dont support libavcodec prior to build 4641, get the latest libavcodec CVS
#endif
+#if LIBAVCODEC_BUILD < 4645
+#warning your version of libavcodec is old, u might want to get a newer one
+#endif
+
+#if LIBAVCODEC_BUILD < 4645
+#define AVFrame AVVideoFrame
+#define coded_frame coded_picture
+#endif
+
extern int avcodec_inited;
struct vf_priv_s {
unsigned char* outbuf;
int outbuf_size;
AVCodecContext* context;
- AVVideoFrame* pic;
+ AVFrame* pic;
AVCodec* codec;
vo_mpegpes_t pes;
};
@@ -85,7 +94,7 @@ static int config(struct vf_instance_s* vf,
static int put_image(struct vf_instance_s* vf, mp_image_t *mpi){
mp_image_t* dmpi;
int out_size;
- AVVideoFrame *pic= vf->priv->pic;
+ AVFrame *pic= vf->priv->pic;
pic->data[0]=mpi->planes[0];
pic->data[1]=mpi->planes[1];
@@ -148,7 +157,11 @@ static int open(vf_instance_t *vf, char* args){
}
vf->priv->context=avcodec_alloc_context();
- vf->priv->pic=avcodec_alloc_picture();
+#if LIBAVCODEC_BUILD >= 4645
+ vf->priv->pic = avcodec_alloc_frame();
+#else
+ vf->priv->pic = avcodec_alloc_picture();
+#endif
// TODO: parse args ->
if(args) sscanf(args, "%d:%f", &p_quality, &p_fps);