summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/vf_lavc.c
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-12-04 10:49:03 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-12-04 10:49:03 +0000
commitad05ae27cbf9f3b2a033ab8a0acb0507fa0b5a34 (patch)
tree4edf02a2512805e04c8b5523e57dee80d985fc2e /libmpcodecs/vf_lavc.c
parentdc871c209f9343ec864040440e5cf02dd82da8ff (diff)
downloadmpv-ad05ae27cbf9f3b2a033ab8a0acb0507fa0b5a34.tar.bz2
mpv-ad05ae27cbf9f3b2a033ab8a0acb0507fa0b5a34.tar.xz
support for lavc build 4641
no #ifdefs this time as the difference is big and iam lazy, feel free to add #ifdef LIBAVCODEC_BUILD ... git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8340 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs/vf_lavc.c')
-rw-r--r--libmpcodecs/vf_lavc.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/libmpcodecs/vf_lavc.c b/libmpcodecs/vf_lavc.c
index 085209cec5..b3bf8b85f6 100644
--- a/libmpcodecs/vf_lavc.c
+++ b/libmpcodecs/vf_lavc.c
@@ -21,12 +21,17 @@
#include "libavcodec/avcodec.h"
#endif
+#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
+#endif
+
extern int avcodec_inited;
struct vf_priv_s {
unsigned char* outbuf;
int outbuf_size;
AVCodecContext* context;
+ AVVideoFrame* pic;
AVCodec* codec;
vo_mpegpes_t pes;
};
@@ -80,17 +85,17 @@ 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;
- AVPicture lavc_venc_picture;
+ AVVideoFrame *pic= vf->priv->pic;
- lavc_venc_picture.data[0]=mpi->planes[0];
- lavc_venc_picture.data[1]=mpi->planes[1];
- lavc_venc_picture.data[2]=mpi->planes[2];
- lavc_venc_picture.linesize[0]=mpi->stride[0];
- lavc_venc_picture.linesize[1]=mpi->stride[1];
- lavc_venc_picture.linesize[2]=mpi->stride[2];
+ pic->data[0]=mpi->planes[0];
+ pic->data[1]=mpi->planes[1];
+ pic->data[2]=mpi->planes[2];
+ pic->linesize[0]=mpi->stride[0];
+ pic->linesize[1]=mpi->stride[1];
+ pic->linesize[2]=mpi->stride[2];
out_size = avcodec_encode_video(&lavc_venc_context,
- vf->priv->outbuf, vf->priv->outbuf_size, &lavc_venc_picture);
+ vf->priv->outbuf, vf->priv->outbuf_size, pic);
if(out_size<=0) return 1;
@@ -143,6 +148,7 @@ static int open(vf_instance_t *vf, char* args){
}
vf->priv->context=avcodec_alloc_context();
+ vf->priv->pic=avcodec_alloc_picture();
// TODO: parse args ->
if(args) sscanf(args, "%d:%f", &p_quality, &p_fps);
@@ -150,7 +156,11 @@ static int open(vf_instance_t *vf, char* args){
if(p_quality<32){
// fixed qscale
lavc_venc_context.flags = CODEC_FLAG_QSCALE;
+#if LIBAVCODEC_BUILD >= 4641
+ vf->priv->pic->quality = (p_quality<1) ? 1 : p_quality;
+#else
lavc_venc_context.quality = (p_quality<1) ? 1 : p_quality;
+#endif
} else {
// fixed bitrate (in kbits)
lavc_venc_context.bit_rate = 1000*p_quality;