summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authoralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-09-13 20:46:23 +0000
committeralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-09-13 20:46:23 +0000
commit1564cfa9ab58acb7d0d5dad32274cfb2b086185c (patch)
tree8bf49e0303fb7f076b27f87d9732b713d3eca3b5 /libmpcodecs
parent5c2cb7a85158f39eb3aa0c0b3a8bdbd387373fd6 (diff)
downloadmpv-1564cfa9ab58acb7d0d5dad32274cfb2b086185c.tar.bz2
mpv-1564cfa9ab58acb7d0d5dad32274cfb2b086185c.tar.xz
aspect ratio support by encoding (currently only with mpeg4 and h263p)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7390 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/ve_lavc.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/libmpcodecs/ve_lavc.c b/libmpcodecs/ve_lavc.c
index 3c4d8c11ff..1036babe2a 100644
--- a/libmpcodecs/ve_lavc.c
+++ b/libmpcodecs/ve_lavc.c
@@ -86,6 +86,9 @@ static int lavc_param_rc_min_rate=0;
static float lavc_param_rc_initial_cplx=0;
static int lavc_param_mpeg_quant=0;
static int lavc_param_fdct=0;
+#if LIBAVCODEC_BUILD >= 4623
+static float lavc_param_aspect=0.0;
+#endif
#include "cfgparser.h"
@@ -142,6 +145,9 @@ struct config lavcopts_conf[]={
#if LIBAVCODEC_BUILD >= 4621
{"vfdct", &lavc_param_fdct, CONF_TYPE_INT, CONF_RANGE, 0, 10, NULL},
#endif
+#if LIBAVCODEC_BUILD >= 4623
+ {"aspect", &lavc_param_aspect, CONF_TYPE_FLOAT, CONF_RANGE, 0.2, 3.0, NULL},
+#endif
{NULL, NULL, 0, 0, 0, 0, NULL}
};
#endif
@@ -192,7 +198,6 @@ static int config(struct vf_instance_s* vf,
lavc_venc_context.b_quant_factor= lavc_param_vb_qfactor;
lavc_venc_context.rc_strategy= lavc_param_vrc_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.luma_elim_threshold= lavc_param_luma_elim_threshold;
@@ -248,6 +253,30 @@ static int config(struct vf_instance_s* vf,
lavc_venc_context.dct_algo= lavc_param_fdct;
#endif
+#if LIBAVCODEC_BUILD >= 4623
+ if (lavc_param_aspect != 0.0)
+ {
+ /* 625 means CIF */
+ if (lavc_param_aspect == (float)(4.0/3.0))
+ lavc_venc_context.aspect_ratio_info = FF_ASPECT_4_3_625;
+ else if (lavc_param_aspect == (float)(16.0/9.0))
+ lavc_venc_context.aspect_ratio_info = FF_ASPECT_16_9_625;
+ else if (lavc_param_aspect == (float)(221.0/100.0))
+ {
+ lavc_venc_context.aspect_ratio_info = FF_ASPECT_EXTENDED;
+ lavc_venc_context.aspected_width = 221;
+ lavc_venc_context.aspected_height = 100;
+ }
+ else
+ {
+ printf("Unsupported aspect ratio (%f)\n", lavc_param_aspect);
+ }
+ mp_dbg(MSGT_MENCODER, MSGL_DBG2, "aspect_ratio_info: %d\n", lavc_venc_context.aspect_ratio_info);
+ mp_dbg(MSGT_MENCODER, MSGL_DBG2, "par_width: %d\n", lavc_venc_context.aspected_width);
+ mp_dbg(MSGT_MENCODER, MSGL_DBG2, "par_height: %d\n", lavc_venc_context.aspected_height);
+ }
+#endif
+
/* keyframe interval */
if (lavc_param_keyint >= 0) /* != -1 */
lavc_venc_context.gop_size = lavc_param_keyint;
@@ -382,7 +411,7 @@ static int query_format(struct vf_instance_s* vf, unsigned int fmt){
case IMGFMT_YV12:
case IMGFMT_IYUV:
case IMGFMT_I420:
- return VFCAP_CSP_SUPPORTED | VFCAP_ACCEPT_STRIDE;
+ return VFCAP_CSP_SUPPORTED | VFCAP_ACCEPT_STRIDE;
}
return 0;
}