1
mirror of https://git.videolan.org/git/ffmpeg.git synced 2024-08-01 08:49:59 +02:00

New options for intra/inter matrices patch by (Vidar Madsen <vidar at prosalg dot no>)

Originally committed as revision 2456 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Vidar Madsen 2003-10-31 10:25:21 +00:00 committed by Michael Niedermayer
parent d43fb4e806
commit 84f608f4a0

View File

@ -87,6 +87,8 @@ static int video_mb_qmax = 31;
static int video_qdiff = 3;
static float video_qblur = 0.5;
static float video_qcomp = 0.5;
static uint16_t *intra_matrix = NULL;
static uint16_t *inter_matrix = NULL;
#if 0 //experimental, (can be removed)
static float video_rc_qsquish=1.0;
static float video_rc_qmod_amp=0;
@ -2261,7 +2263,12 @@ static void opt_output_file(const char *filename)
video_enc->flags |= CODEC_FLAG_QSCALE;
st->quality = FF_QP2LAMBDA * video_qscale;
}
if(intra_matrix)
video_enc->intra_matrix = intra_matrix;
if(inter_matrix)
video_enc->inter_matrix = inter_matrix;
if(bitexact)
video_enc->flags |= CODEC_FLAG_BITEXACT;
@ -2666,6 +2673,35 @@ static void show_formats(void)
exit(1);
}
void parse_matrix_coeffs(uint16_t *dest, const char *str)
{
int i;
const char *p = str;
for(i = 0;; i++) {
dest[i] = atoi(p);
if(i == 63)
break;
p = strchr(p, ',');
if(!p) {
fprintf(stderr, "Syntax error in matrix \"%s\" at coeff %d\n", str, i);
exit(1);
}
p++;
}
}
void opt_inter_matrix(const char *arg)
{
inter_matrix = av_mallocz(sizeof(uint16_t) * 64);
parse_matrix_coeffs(inter_matrix, arg);
}
void opt_intra_matrix(const char *arg)
{
intra_matrix = av_mallocz(sizeof(uint16_t) * 64);
parse_matrix_coeffs(intra_matrix, arg);
}
const OptionDef options[] = {
/* main options */
{ "L", 0, {(void*)show_license}, "show license" },
@ -2751,6 +2787,8 @@ const OptionDef options[] = {
{ "vhook", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)add_frame_hooker}, "insert video processing module", "module" },
{ "aic", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_aic}, "enable Advanced intra coding (h263+)" },
{ "umv", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_umv}, "enable Unlimited Motion Vector (h263+)" },
{ "intra_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_intra_matrix}, "specify intra matrix coeffs", "matrix" },
{ "inter_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_inter_matrix}, "specify inter matrix coeffs", "matrix" },
/* audio options */
{ "ab", HAS_ARG | OPT_AUDIO, {(void*)opt_audio_bitrate}, "set audio bitrate (in kbit/s)", "bitrate", },
@ -2875,6 +2913,10 @@ int main(int argc, char **argv)
av_free_static();
if(intra_matrix)
av_free(intra_matrix);
if(inter_matrix)
av_free(inter_matrix);
#ifdef POWERPC_PERFORMANCE_REPORT
extern void powerpc_display_perf_report(void);