rebuilt with libmjpegtool 2.2.1 and patches [release 1.1.7-6mamba;Tue Jan 04 2022]
This commit is contained in:
parent
0287919081
commit
1a4e32e9d7
1241
transcode-1.1.7-ffmpeg3.patch
Normal file
1241
transcode-1.1.7-ffmpeg3.patch
Normal file
File diff suppressed because it is too large
Load Diff
494
transcode-1.1.7-ffmpeg4.patch
Normal file
494
transcode-1.1.7-ffmpeg4.patch
Normal file
@ -0,0 +1,494 @@
|
|||||||
|
--- a/encode/encode_lavc.c
|
||||||
|
+++ b/encode/encode_lavc.c
|
||||||
|
@@ -77,6 +77,13 @@ struct tclavcconfigdata_ {
|
||||||
|
int luma_elim_threshold;
|
||||||
|
int chroma_elim_threshold;
|
||||||
|
int quantizer_noise_shaping;
|
||||||
|
+ int inter_quant_bias;
|
||||||
|
+ int intra_quant_bias;
|
||||||
|
+ int scenechange_factor;
|
||||||
|
+ int rc_strategy;
|
||||||
|
+ float rc_initial_cplx;
|
||||||
|
+ float rc_qsquish;
|
||||||
|
+ float border_masking;
|
||||||
|
|
||||||
|
/* same as above for flags */
|
||||||
|
struct {
|
||||||
|
@@ -684,7 +691,7 @@ static int tc_lavc_init_multipass(TCLavc
|
||||||
|
switch (vob->divxmultipass) {
|
||||||
|
case 1:
|
||||||
|
CAN_DO_MULTIPASS(multipass_flag);
|
||||||
|
- pd->ff_vcontext.flags |= CODEC_FLAG_PASS1;
|
||||||
|
+ pd->ff_vcontext.flags |= AV_CODEC_FLAG_PASS1;
|
||||||
|
pd->stats_file = fopen(vob->divxlogfile, "w");
|
||||||
|
if (pd->stats_file == NULL) {
|
||||||
|
tc_log_error(MOD_NAME, "could not create 2pass log file"
|
||||||
|
@@ -694,7 +701,7 @@ static int tc_lavc_init_multipass(TCLavc
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
CAN_DO_MULTIPASS(multipass_flag);
|
||||||
|
- pd->ff_vcontext.flags |= CODEC_FLAG_PASS2;
|
||||||
|
+ pd->ff_vcontext.flags |= AV_CODEC_FLAG_PASS2;
|
||||||
|
pd->stats_file = fopen(vob->divxlogfile, "r");
|
||||||
|
if (pd->stats_file == NULL){
|
||||||
|
tc_log_error(MOD_NAME, "could not open 2pass log file \"%s\""
|
||||||
|
@@ -723,7 +730,7 @@ static int tc_lavc_init_multipass(TCLavc
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
/* fixed qscale :p */
|
||||||
|
- pd->ff_vcontext.flags |= CODEC_FLAG_QSCALE;
|
||||||
|
+ pd->ff_vcontext.flags |= AV_CODEC_FLAG_QSCALE;
|
||||||
|
pd->ff_venc_frame.quality = vob->divxbitrate;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -970,7 +977,7 @@ static void tc_lavc_config_defaults(TCLa
|
||||||
|
pd->confdata.rc_buffer_size = 0;
|
||||||
|
pd->confdata.lmin = 2;
|
||||||
|
pd->confdata.lmax = 31;
|
||||||
|
- pd->confdata.me_method = ME_EPZS;
|
||||||
|
+ pd->confdata.me_method = 0;
|
||||||
|
|
||||||
|
memset(&pd->confdata.flags, 0, sizeof(pd->confdata.flags));
|
||||||
|
pd->confdata.turbo_setup = 0;
|
||||||
|
@@ -983,12 +990,12 @@ static void tc_lavc_config_defaults(TCLa
|
||||||
|
pd->ff_vcontext.me_range = 0;
|
||||||
|
pd->ff_vcontext.mb_decision = 0;
|
||||||
|
pd->ff_vcontext.scenechange_threshold = 0;
|
||||||
|
- pd->ff_vcontext.scenechange_factor = 1;
|
||||||
|
+ pd->confdata.scenechange_factor = 1;
|
||||||
|
pd->ff_vcontext.b_frame_strategy = 0;
|
||||||
|
pd->ff_vcontext.b_sensitivity = 40;
|
||||||
|
pd->ff_vcontext.brd_scale = 0;
|
||||||
|
pd->ff_vcontext.bidir_refine = 0;
|
||||||
|
- pd->ff_vcontext.rc_strategy = 2;
|
||||||
|
+ pd->confdata.rc_strategy = 2;
|
||||||
|
pd->ff_vcontext.b_quant_factor = 1.25;
|
||||||
|
pd->ff_vcontext.i_quant_factor = 0.8;
|
||||||
|
pd->ff_vcontext.b_quant_offset = 1.25;
|
||||||
|
@@ -996,8 +1003,8 @@ static void tc_lavc_config_defaults(TCLa
|
||||||
|
pd->ff_vcontext.qblur = 0.5;
|
||||||
|
pd->ff_vcontext.qcompress = 0.5;
|
||||||
|
pd->ff_vcontext.mpeg_quant = 0;
|
||||||
|
- pd->ff_vcontext.rc_initial_cplx = 0.0;
|
||||||
|
- pd->ff_vcontext.rc_qsquish = 1.0;
|
||||||
|
+ pd->confdata.rc_initial_cplx = 0.0;
|
||||||
|
+ pd->confdata.rc_qsquish = 1.0;
|
||||||
|
pd->confdata.luma_elim_threshold = 0;
|
||||||
|
pd->confdata.chroma_elim_threshold = 0;
|
||||||
|
pd->ff_vcontext.strict_std_compliance = 0;
|
||||||
|
@@ -1008,7 +1015,7 @@ static void tc_lavc_config_defaults(TCLa
|
||||||
|
pd->ff_vcontext.temporal_cplx_masking = 0.0;
|
||||||
|
pd->ff_vcontext.spatial_cplx_masking = 0.0;
|
||||||
|
pd->ff_vcontext.p_masking = 0.0;
|
||||||
|
- pd->ff_vcontext.border_masking = 0.0;
|
||||||
|
+ pd->confdata.border_masking = 0.0;
|
||||||
|
pd->ff_vcontext.me_pre_cmp = 0;
|
||||||
|
pd->ff_vcontext.me_cmp = 0;
|
||||||
|
pd->ff_vcontext.me_sub_cmp = 0;
|
||||||
|
@@ -1020,8 +1027,6 @@ static void tc_lavc_config_defaults(TCLa
|
||||||
|
pd->ff_vcontext.pre_me = 1;
|
||||||
|
pd->ff_vcontext.me_subpel_quality = 8;
|
||||||
|
pd->ff_vcontext.refs = 1;
|
||||||
|
- pd->ff_vcontext.intra_quant_bias = FF_DEFAULT_QUANT_BIAS;
|
||||||
|
- pd->ff_vcontext.inter_quant_bias = FF_DEFAULT_QUANT_BIAS;
|
||||||
|
pd->ff_vcontext.noise_reduction = 0;
|
||||||
|
pd->confdata.quantizer_noise_shaping = 0;
|
||||||
|
pd->ff_vcontext.flags = 0;
|
||||||
|
@@ -1044,14 +1049,16 @@ static void tc_lavc_config_defaults(TCLa
|
||||||
|
*/
|
||||||
|
static void tc_lavc_dispatch_settings(TCLavcPrivateData *pd)
|
||||||
|
{
|
||||||
|
+ char buf[1024];
|
||||||
|
/* some translation... */
|
||||||
|
pd->ff_vcontext.bit_rate_tolerance = pd->confdata.vrate_tolerance * 1000;
|
||||||
|
pd->ff_vcontext.rc_min_rate = pd->confdata.rc_min_rate * 1000;
|
||||||
|
pd->ff_vcontext.rc_max_rate = pd->confdata.rc_max_rate * 1000;
|
||||||
|
pd->ff_vcontext.rc_buffer_size = pd->confdata.rc_buffer_size * 1024;
|
||||||
|
- pd->ff_vcontext.lmin = (int)(FF_QP2LAMBDA * pd->confdata.lmin + 0.5);
|
||||||
|
- pd->ff_vcontext.lmax = (int)(FF_QP2LAMBDA * pd->confdata.lmax + 0.5);
|
||||||
|
- pd->ff_vcontext.me_method = ME_ZERO + pd->confdata.me_method;
|
||||||
|
+ snprintf(buf, sizeof(buf), "%i", (int)(FF_QP2LAMBDA * pd->confdata.lmin + 0.5));
|
||||||
|
+ av_dict_set(&(pd->ff_opts), "lmin", buf, 0);
|
||||||
|
+ snprintf(buf, sizeof(buf), "%i", (int)(FF_QP2LAMBDA * pd->confdata.lmax + 0.5));
|
||||||
|
+ av_dict_set(&(pd->ff_opts), "lmax", buf, 0);
|
||||||
|
|
||||||
|
pd->ff_vcontext.flags = 0;
|
||||||
|
SET_FLAG(pd, qpel);
|
||||||
|
@@ -1075,8 +1080,8 @@ static void tc_lavc_dispatch_settings(TC
|
||||||
|
}
|
||||||
|
if (pd->interlacing.active) {
|
||||||
|
/* enforce interlacing */
|
||||||
|
- pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_DCT;
|
||||||
|
- pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_ME;
|
||||||
|
+ pd->ff_vcontext.flags |= AV_CODEC_FLAG_INTERLACED_DCT;
|
||||||
|
+ pd->ff_vcontext.flags |= AV_CODEC_FLAG_INTERLACED_ME;
|
||||||
|
}
|
||||||
|
if (pd->confdata.flags.alt) {
|
||||||
|
av_dict_set(&(pd->ff_opts), "alternate_scan", "1", 0);
|
||||||
|
@@ -1100,14 +1105,24 @@ static void tc_lavc_dispatch_settings(TC
|
||||||
|
av_dict_set(&(pd->ff_opts), "mpv_flags", "+naq", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
- char buf[1024];
|
||||||
|
#define set_dict_opt(val, opt) \
|
||||||
|
snprintf(buf, sizeof(buf), "%i", pd->confdata.val);\
|
||||||
|
av_dict_set(&(pd->ff_opts), opt, buf, 0)
|
||||||
|
+#define set_dict_float_opt(val, opt) \
|
||||||
|
+ snprintf(buf, sizeof(buf), "%f", pd->confdata.val);\
|
||||||
|
+ av_dict_set(&(pd->ff_opts), opt, buf, 0)
|
||||||
|
|
||||||
|
set_dict_opt(luma_elim_threshold, "luma_elim_threshold");
|
||||||
|
set_dict_opt(chroma_elim_threshold, "chroma_elim_threshold");
|
||||||
|
set_dict_opt(quantizer_noise_shaping, "quantizer_noise_shaping");
|
||||||
|
+ set_dict_opt(inter_quant_bias, "pbias");
|
||||||
|
+ set_dict_opt(intra_quant_bias, "ibias");
|
||||||
|
+ set_dict_opt(me_method, "me_method");
|
||||||
|
+ set_dict_opt(scenechange_factor, "sc_factor");
|
||||||
|
+ set_dict_opt(rc_strategy, "rc_strategy");
|
||||||
|
+ set_dict_float_opt(rc_initial_cplx, "rc_init_cplx");
|
||||||
|
+ set_dict_float_opt(rc_qsquish, "qsquish");
|
||||||
|
+ set_dict_float_opt(border_masking, "border_mask");
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef SET_FLAG
|
||||||
|
@@ -1168,7 +1189,7 @@ static int tc_lavc_read_config(TCLavcPri
|
||||||
|
{ "me_range", PCTX(me_range), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16000 },
|
||||||
|
{ "mbd", PCTX(mb_decision), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 3 },
|
||||||
|
{ "sc_threshold", PCTX(scenechange_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000 },
|
||||||
|
- { "sc_factor", PCTX(scenechange_factor), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 16 },
|
||||||
|
+ { "sc_factor", PAUX(scenechange_factor), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 16 },
|
||||||
|
{ "vb_strategy", PCTX(b_frame_strategy), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10 },
|
||||||
|
{ "b_sensitivity", PCTX(b_sensitivity), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 100 },
|
||||||
|
{ "brd_scale", PCTX(brd_scale), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10 },
|
||||||
|
@@ -1179,7 +1200,7 @@ static int tc_lavc_read_config(TCLavcPri
|
||||||
|
{ "vrc_maxrate", PAUX(rc_max_rate), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 24000000 },
|
||||||
|
{ "vrc_minrate", PAUX(rc_min_rate), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 24000000 },
|
||||||
|
{ "vrc_buf_size", PAUX(rc_buffer_size), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 4, 24000000 },
|
||||||
|
- { "vrc_strategy", PCTX(rc_strategy), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2 },
|
||||||
|
+ { "vrc_strategy", PAUX(rc_strategy), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2 },
|
||||||
|
{ "vb_qfactor", PCTX(b_quant_factor), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0 },
|
||||||
|
{ "vi_qfactor", PCTX(i_quant_factor), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0 },
|
||||||
|
{ "vb_qoffset", PCTX(b_quant_offset), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 31.0 },
|
||||||
|
@@ -1189,9 +1210,9 @@ static int tc_lavc_read_config(TCLavcPri
|
||||||
|
{ "mpeg_quant", PCTX(mpeg_quant), TCCONF_TYPE_FLAG, 0, 0, 1 },
|
||||||
|
// { "vrc_eq", }, // not yet supported
|
||||||
|
{ "vrc_override", rc_override_buf, TCCONF_TYPE_STRING, 0, 0, 0 },
|
||||||
|
- { "vrc_init_cplx", PCTX(rc_initial_cplx), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 9999999.0 },
|
||||||
|
+ { "vrc_init_cplx", PAUX(rc_initial_cplx), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 9999999.0 },
|
||||||
|
// { "vrc_init_occupancy", }, // not yet supported
|
||||||
|
- { "vqsquish", PCTX(rc_qsquish), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 99.0 },
|
||||||
|
+ { "vqsquish", PAUX(rc_qsquish), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 99.0 },
|
||||||
|
{ "vlelim", PAUX(luma_elim_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 },
|
||||||
|
{ "vcelim", PAUX(chroma_elim_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 },
|
||||||
|
{ "vstrict", PCTX(strict_std_compliance), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 },
|
||||||
|
@@ -1203,7 +1224,7 @@ static int tc_lavc_read_config(TCLavcPri
|
||||||
|
{ "tcplx_mask", PCTX(temporal_cplx_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 },
|
||||||
|
{ "scplx_mask", PCTX(spatial_cplx_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 },
|
||||||
|
{ "p_mask", PCTX(p_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 },
|
||||||
|
- { "border_mask", PCTX(border_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 },
|
||||||
|
+ { "border_mask", PAUX(border_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 },
|
||||||
|
{ "pred", PCTX(prediction_method), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 4 },
|
||||||
|
{ "precmp", PCTX(me_pre_cmp), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000 },
|
||||||
|
{ "cmp", PCTX(me_cmp), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000 },
|
||||||
|
@@ -1216,37 +1237,37 @@ static int tc_lavc_read_config(TCLavcPri
|
||||||
|
{ "pre_me", PCTX(pre_me), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000},
|
||||||
|
{ "subq", PCTX(me_subpel_quality), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 8 },
|
||||||
|
{ "refs", PCTX(refs), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 8 },
|
||||||
|
- { "ibias", PCTX(intra_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 },
|
||||||
|
- { "pbias", PCTX(inter_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 },
|
||||||
|
+ { "ibias", PAUX(intra_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 },
|
||||||
|
+ { "pbias", PAUX(inter_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 },
|
||||||
|
{ "nr", PCTX(noise_reduction), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000000},
|
||||||
|
{ "qns", PAUX(quantizer_noise_shaping), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 3 },
|
||||||
|
{ "inter_matrix_file", inter_matrix_file, TCCONF_TYPE_STRING, 0, 0, 0 },
|
||||||
|
{ "intra_matrix_file", intra_matrix_file, TCCONF_TYPE_STRING, 0, 0, 0 },
|
||||||
|
|
||||||
|
{ "mv0", PAUX(flags.mv0), TCCONF_TYPE_FLAG, 0, 0, 1 },
|
||||||
|
{ "cbp", PAUX(flags.cbp), TCCONF_TYPE_FLAG, 0, 0, 1 },
|
||||||
|
- { "qpel", PAUX(flags.qpel), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_QPEL },
|
||||||
|
+ { "qpel", PAUX(flags.qpel), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_QPEL },
|
||||||
|
{ "alt", PAUX(flags.alt), TCCONF_TYPE_FLAG, 0, 0, 1 },
|
||||||
|
- { "ilme", PAUX(flags.ilme), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_ME },
|
||||||
|
- { "ildct", PAUX(flags.ildct), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_DCT },
|
||||||
|
+ { "ilme", PAUX(flags.ilme), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_INTERLACED_ME },
|
||||||
|
+ { "ildct", PAUX(flags.ildct), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_INTERLACED_DCT },
|
||||||
|
{ "naq", PAUX(flags.naq), TCCONF_TYPE_FLAG, 0, 0, 1 },
|
||||||
|
{ "vdpart", PAUX(flags.vdpart), TCCONF_TYPE_FLAG, 0, 0, 1 },
|
||||||
|
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
|
||||||
|
{ "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_AIC },
|
||||||
|
#else
|
||||||
|
- { "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_AC_PRED },
|
||||||
|
+ { "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_AC_PRED },
|
||||||
|
#endif
|
||||||
|
{ "aiv", PAUX(flags.aiv), TCCONF_TYPE_FLAG, 0, 0, 1 },
|
||||||
|
{ "umv", PAUX(flags.umv), TCCONF_TYPE_FLAG, 0, 0, 1 },
|
||||||
|
- { "psnr", PAUX(flags.psnr), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PSNR },
|
||||||
|
+ { "psnr", PAUX(flags.psnr), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_PSNR },
|
||||||
|
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
|
||||||
|
{ "trell", PAUX(flags.trell), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_TRELLIS_QUANT },
|
||||||
|
#else
|
||||||
|
{ "trell", PCTX(trellis), TCCONF_TYPE_FLAG, 0, 0, 1 },
|
||||||
|
#endif
|
||||||
|
- { "gray", PAUX(flags.gray), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_GRAY },
|
||||||
|
- { "v4mv", PAUX(flags.v4mv), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_4MV },
|
||||||
|
- { "closedgop", PAUX(flags.closedgop), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_CLOSED_GOP },
|
||||||
|
+ { "gray", PAUX(flags.gray), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_GRAY },
|
||||||
|
+ { "v4mv", PAUX(flags.v4mv), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_4MV },
|
||||||
|
+ { "closedgop", PAUX(flags.closedgop), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_CLOSED_GOP },
|
||||||
|
|
||||||
|
// { "turbo", PAUX(turbo_setup), TCCONF_TYPE_FLAG, 0, 0, 1 }, // not yet supported
|
||||||
|
/* End of the config file */
|
||||||
|
--- a/export/export_ffmpeg.c
|
||||||
|
+++ b/export/export_ffmpeg.c
|
||||||
|
@@ -831,14 +831,11 @@ MOD_init
|
||||||
|
|
||||||
|
lavc_venc_context->bit_rate = vob->divxbitrate * 1000;
|
||||||
|
lavc_venc_context->bit_rate_tolerance = lavc_param_vrate_tolerance * 1000;
|
||||||
|
- lavc_venc_context->lmin= (int)(FF_QP2LAMBDA * lavc_param_lmin + 0.5);
|
||||||
|
- lavc_venc_context->lmax= (int)(FF_QP2LAMBDA * lavc_param_lmax + 0.5);
|
||||||
|
lavc_venc_context->max_qdiff = lavc_param_vqdiff;
|
||||||
|
lavc_venc_context->qcompress = lavc_param_vqcompress;
|
||||||
|
lavc_venc_context->qblur = lavc_param_vqblur;
|
||||||
|
lavc_venc_context->max_b_frames = lavc_param_vmax_b_frames;
|
||||||
|
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;
|
||||||
|
lavc_venc_context->b_quant_offset = lavc_param_vb_qoffset;
|
||||||
|
|
||||||
|
@@ -846,8 +843,23 @@ MOD_init
|
||||||
|
#define set_dict_opt(val, opt) \
|
||||||
|
snprintf(buf, sizeof(buf), "%i", val); \
|
||||||
|
av_dict_set(&lavc_venc_opts, opt, buf, 0)
|
||||||
|
+#define set_dict_float_opt(val, opt) \
|
||||||
|
+ snprintf(buf, sizeof(buf), "%f", val); \
|
||||||
|
+ av_dict_set(&lavc_venc_opts, opt, buf, 0)
|
||||||
|
set_dict_opt(lavc_param_luma_elim_threshold, "luma_elim_threshold");
|
||||||
|
set_dict_opt(lavc_param_chroma_elim_threshold, "chroma_elim_threshold");
|
||||||
|
+ set_dict_opt((int)(FF_QP2LAMBDA * lavc_param_lmin + 0.5), "lmin");
|
||||||
|
+ set_dict_opt((int)(FF_QP2LAMBDA * lavc_param_lmax + 0.5), "lmax");
|
||||||
|
+ set_dict_opt(lavc_param_vrc_strategy, "rc_strategy");
|
||||||
|
+ set_dict_float_opt(lavc_param_rc_qsquish, "qsquish");
|
||||||
|
+ set_dict_float_opt(lavc_param_rc_qmod_amp, "rc_qmod_amp");
|
||||||
|
+ set_dict_opt(lavc_param_rc_qmod_freq, "rc_qmod_freq");
|
||||||
|
+ set_dict_opt(lavc_param_rc_eq, "rc_eq");
|
||||||
|
+ set_dict_opt(lavc_param_vme, "me_method");
|
||||||
|
+ set_dict_opt(lavc_param_ibias, "ibias");
|
||||||
|
+ set_dict_opt(lavc_param_pbias, "pbias");
|
||||||
|
+ set_dict_float_opt(lavc_param_rc_buffer_aggressivity, "rc_buf_aggressivity");
|
||||||
|
+ set_dict_float_opt(lavc_param_rc_initial_cplx, "rc_init_cplx");
|
||||||
|
lavc_venc_context->rtp_payload_size = lavc_param_packet_size;
|
||||||
|
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
|
||||||
|
if (lavc_param_packet_size)
|
||||||
|
@@ -856,15 +868,9 @@ MOD_init
|
||||||
|
lavc_venc_context->strict_std_compliance= lavc_param_strict;
|
||||||
|
lavc_venc_context->i_quant_factor = lavc_param_vi_qfactor;
|
||||||
|
lavc_venc_context->i_quant_offset = lavc_param_vi_qoffset;
|
||||||
|
- lavc_venc_context->rc_qsquish = lavc_param_rc_qsquish;
|
||||||
|
- lavc_venc_context->rc_qmod_amp = lavc_param_rc_qmod_amp;
|
||||||
|
- lavc_venc_context->rc_qmod_freq = lavc_param_rc_qmod_freq;
|
||||||
|
- lavc_venc_context->rc_eq = lavc_param_rc_eq;
|
||||||
|
lavc_venc_context->rc_max_rate = lavc_param_rc_max_rate * 1000;
|
||||||
|
lavc_venc_context->rc_min_rate = lavc_param_rc_min_rate * 1000;
|
||||||
|
lavc_venc_context->rc_buffer_size = lavc_param_rc_buffer_size * 1024;
|
||||||
|
- lavc_venc_context->rc_buffer_aggressivity= lavc_param_rc_buffer_aggressivity;
|
||||||
|
- lavc_venc_context->rc_initial_cplx = lavc_param_rc_initial_cplx;
|
||||||
|
lavc_venc_context->debug = lavc_param_debug;
|
||||||
|
lavc_venc_context->last_predictor_count= lavc_param_last_pred;
|
||||||
|
lavc_venc_context->pre_me = lavc_param_pre_me;
|
||||||
|
@@ -872,8 +878,6 @@ MOD_init
|
||||||
|
lavc_venc_context->pre_dia_size = lavc_param_pre_dia_size;
|
||||||
|
lavc_venc_context->me_subpel_quality = lavc_param_me_subpel_quality;
|
||||||
|
lavc_venc_context->me_range = lavc_param_me_range;
|
||||||
|
- lavc_venc_context->intra_quant_bias = lavc_param_ibias;
|
||||||
|
- lavc_venc_context->inter_quant_bias = lavc_param_pbias;
|
||||||
|
lavc_venc_context->coder_type = lavc_param_coder;
|
||||||
|
lavc_venc_context->context_model = lavc_param_context;
|
||||||
|
lavc_venc_context->scenechange_threshold= lavc_param_sc_threshold;
|
||||||
|
@@ -1081,6 +1085,8 @@ MOD_init
|
||||||
|
av_dict_set(&lavc_venc_opts, "mpv_flags", "+mv0", 0);
|
||||||
|
if(lavc_param_qp_rd)
|
||||||
|
av_dict_set(&lavc_venc_opts, "mpv_flags", "+qp_rd", 0);
|
||||||
|
+ if (lavc_param_normalize_aqp)
|
||||||
|
+ av_dict_set(&lavc_venc_opts, "mpv_flags", "+naq", 0);
|
||||||
|
lavc_venc_context->flags |= lavc_param_ilme;
|
||||||
|
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
|
||||||
|
lavc_venc_context->flags |= lavc_param_trell;
|
||||||
|
@@ -1089,9 +1095,7 @@ MOD_init
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (lavc_param_gray)
|
||||||
|
- lavc_venc_context->flags |= CODEC_FLAG_GRAY;
|
||||||
|
- if (lavc_param_normalize_aqp)
|
||||||
|
- av_dict_set(&lavc_venc_opts, "mpv_flags", "+naq", 0);
|
||||||
|
+ lavc_venc_context->flags |= AV_CODEC_FLAG_GRAY;
|
||||||
|
|
||||||
|
switch(vob->encode_fields) {
|
||||||
|
case TC_ENCODE_FIELDS_TOP_FIRST:
|
||||||
|
@@ -1109,9 +1113,9 @@ MOD_init
|
||||||
|
}
|
||||||
|
|
||||||
|
lavc_venc_context->flags |= interlacing_active ?
|
||||||
|
- CODEC_FLAG_INTERLACED_DCT : 0;
|
||||||
|
+ AV_CODEC_FLAG_INTERLACED_DCT : 0;
|
||||||
|
lavc_venc_context->flags |= interlacing_active ?
|
||||||
|
- CODEC_FLAG_INTERLACED_ME : 0;
|
||||||
|
+ AV_CODEC_FLAG_INTERLACED_ME : 0;
|
||||||
|
|
||||||
|
lavc_venc_context->flags |= lavc_param_psnr;
|
||||||
|
do_psnr = lavc_param_psnr;
|
||||||
|
@@ -1158,7 +1162,7 @@ MOD_init
|
||||||
|
"encoding.");
|
||||||
|
return TC_EXPORT_ERROR;
|
||||||
|
}
|
||||||
|
- lavc_venc_context->flags |= CODEC_FLAG_PASS1;
|
||||||
|
+ lavc_venc_context->flags |= AV_CODEC_FLAG_PASS1;
|
||||||
|
stats_file = fopen(vob->divxlogfile, "w");
|
||||||
|
if (stats_file == NULL){
|
||||||
|
tc_log_warn(MOD_NAME, "Could not create 2pass log file \"%s\".",
|
||||||
|
@@ -1172,7 +1176,7 @@ MOD_init
|
||||||
|
"encoding.");
|
||||||
|
return TC_EXPORT_ERROR;
|
||||||
|
}
|
||||||
|
- lavc_venc_context->flags |= CODEC_FLAG_PASS2;
|
||||||
|
+ lavc_venc_context->flags |= AV_CODEC_FLAG_PASS2;
|
||||||
|
stats_file= fopen(vob->divxlogfile, "r");
|
||||||
|
if (stats_file==NULL){
|
||||||
|
tc_log_warn(MOD_NAME, "Could not open 2pass log file \"%s\" for "
|
||||||
|
@@ -1203,12 +1207,11 @@ MOD_init
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
/* fixed qscale :p */
|
||||||
|
- lavc_venc_context->flags |= CODEC_FLAG_QSCALE;
|
||||||
|
+ lavc_venc_context->flags |= AV_CODEC_FLAG_QSCALE;
|
||||||
|
lavc_venc_frame->quality = vob->divxbitrate;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
- lavc_venc_context->me_method = ME_ZERO + lavc_param_vme;
|
||||||
|
|
||||||
|
/* FIXME: transcode itself contains "broken ffmpeg default settings", thus we need to override them! */
|
||||||
|
if (lavc_param_video_preset && strcmp(lavc_param_video_preset, "none")) {
|
||||||
|
--- a/export/ffmpeg_cfg.c
|
||||||
|
+++ b/export/ffmpeg_cfg.c
|
||||||
|
@@ -93,8 +93,8 @@ int lavc_param_last_pred= 0;
|
||||||
|
int lavc_param_pre_me= 1;
|
||||||
|
int lavc_param_me_subpel_quality= 8;
|
||||||
|
int lavc_param_me_range=0;
|
||||||
|
-int lavc_param_ibias=FF_DEFAULT_QUANT_BIAS;
|
||||||
|
-int lavc_param_pbias=FF_DEFAULT_QUANT_BIAS;
|
||||||
|
+int lavc_param_ibias=0;
|
||||||
|
+int lavc_param_pbias=0;
|
||||||
|
int lavc_param_coder=0;
|
||||||
|
int lavc_param_context=0;
|
||||||
|
char *lavc_param_intra_matrix = NULL;
|
||||||
|
@@ -136,7 +136,7 @@ TCConfigEntry lavcopts_conf[]={
|
||||||
|
{"vratetol", &lavc_param_vrate_tolerance, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 4, 24000000},
|
||||||
|
{"vhq", &lavc_param_mb_decision, TCCONF_TYPE_FLAG, 0, 0, 1},
|
||||||
|
{"mbd", &lavc_param_mb_decision, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 9},
|
||||||
|
- {"v4mv", &lavc_param_v4mv, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_4MV},
|
||||||
|
+ {"v4mv", &lavc_param_v4mv, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_4MV},
|
||||||
|
{"vme", &lavc_param_vme, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 5},
|
||||||
|
// {"vqscale", &lavc_param_vqscale, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31},
|
||||||
|
// {"vqmin", &lavc_param_vqmin, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31},
|
||||||
|
@@ -158,7 +158,7 @@ TCConfigEntry lavcopts_conf[]={
|
||||||
|
{"vstrict", &lavc_param_strict, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99},
|
||||||
|
{"vdpart", &lavc_param_data_partitioning, TCCONF_TYPE_FLAG, 0, 0, 1},
|
||||||
|
// {"keyint", &lavc_param_keyint, TCCONF_TYPE_INT, 0, 0, 0},
|
||||||
|
- {"gray", &lavc_param_gray, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_GRAY},
|
||||||
|
+ {"gray", &lavc_param_gray, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_GRAY},
|
||||||
|
{"mpeg_quant", &lavc_param_mpeg_quant, TCCONF_TYPE_FLAG, 0, 0, 1},
|
||||||
|
{"vi_qfactor", &lavc_param_vi_qfactor, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0},
|
||||||
|
{"vi_qoffset", &lavc_param_vi_qoffset, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 31.0},
|
||||||
|
@@ -184,7 +184,7 @@ TCConfigEntry lavcopts_conf[]={
|
||||||
|
{"pred", &lavc_param_prediction_method, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 20},
|
||||||
|
{"format", &lavc_param_format, TCCONF_TYPE_STRING, 0, 0, 0},
|
||||||
|
{"debug", &lavc_param_debug, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 100000000},
|
||||||
|
- {"psnr", &lavc_param_psnr, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PSNR},
|
||||||
|
+ {"psnr", &lavc_param_psnr, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_PSNR},
|
||||||
|
{"precmp", &lavc_param_me_pre_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000},
|
||||||
|
{"cmp", &lavc_param_me_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000},
|
||||||
|
{"subcmp", &lavc_param_me_sub_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000},
|
||||||
|
@@ -192,9 +192,9 @@ TCConfigEntry lavcopts_conf[]={
|
||||||
|
{"ildctcmp", &lavc_param_ildct_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000},
|
||||||
|
{"predia", &lavc_param_pre_dia_size, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -2000, 2000},
|
||||||
|
{"dia", &lavc_param_dia_size, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -2000, 2000},
|
||||||
|
- {"qpel", &lavc_param_qpel, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_QPEL},
|
||||||
|
+ {"qpel", &lavc_param_qpel, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_QPEL},
|
||||||
|
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
|
||||||
|
- {"trell", &lavc_param_trell, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_TRELLIS_QUANT},
|
||||||
|
+ {"trell", &lavc_param_trell, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_TRELLIS_QUANT},
|
||||||
|
#else
|
||||||
|
{"trell", &lavc_param_trell, TCCONF_TYPE_FLAG, 0, 0, 1},
|
||||||
|
#endif
|
||||||
|
@@ -203,9 +203,9 @@ TCConfigEntry lavcopts_conf[]={
|
||||||
|
{"subq", &lavc_param_me_subpel_quality, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 8},
|
||||||
|
{"me_range", &lavc_param_me_range, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16000},
|
||||||
|
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
|
||||||
|
- {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_AIC},
|
||||||
|
+ {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_H263P_AIC},
|
||||||
|
#else
|
||||||
|
- {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_AC_PRED},
|
||||||
|
+ {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_AC_PRED},
|
||||||
|
#endif
|
||||||
|
{"umv", &lavc_param_umv, TCCONF_TYPE_FLAG, 0, 0, 1},
|
||||||
|
{"ibias", &lavc_param_ibias, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512},
|
||||||
|
@@ -222,13 +222,13 @@ TCConfigEntry lavcopts_conf[]={
|
||||||
|
{"ss", &lavc_param_ss, TCCONF_TYPE_FLAG, 0, 0, 1},
|
||||||
|
{"svcd_sof", &lavc_param_scan_offset, TCCONF_TYPE_FLAG, 0, 0, 1},
|
||||||
|
{"alt", &lavc_param_alt, TCCONF_TYPE_FLAG, 0, 0, 1},
|
||||||
|
- {"ilme", &lavc_param_ilme, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_ME},
|
||||||
|
+ {"ilme", &lavc_param_ilme, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_INTERLACED_ME},
|
||||||
|
{"inter_threshold", &lavc_param_inter_threshold, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000},
|
||||||
|
{"sc_threshold", &lavc_param_sc_threshold, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000},
|
||||||
|
{"top", &lavc_param_top, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1, 1},
|
||||||
|
{"gmc", &lavc_param_gmc, TCCONF_TYPE_FLAG, 0, 0, 1},
|
||||||
|
- {"trunc", &lavc_param_trunc, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_TRUNCATED},
|
||||||
|
- {"closedgop", &lavc_param_closedgop, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_CLOSED_GOP},
|
||||||
|
+ {"trunc", &lavc_param_trunc, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_TRUNCATED},
|
||||||
|
+ {"closedgop", &lavc_param_closedgop, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_CLOSED_GOP},
|
||||||
|
{"intra_dc_precision", &lavc_param_intra_dc_precision, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16},
|
||||||
|
{"skip_top", &lavc_param_skip_top, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000},
|
||||||
|
{"skip_bottom", &lavc_param_skip_bottom, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000},
|
||||||
|
--- a/import/import_ffmpeg.c
|
||||||
|
+++ b/import/import_ffmpeg.c
|
||||||
|
@@ -310,7 +310,7 @@ do_avi:
|
||||||
|
lavc_dec_context->width = x_dim;
|
||||||
|
lavc_dec_context->height = y_dim;
|
||||||
|
|
||||||
|
- if (vob->decolor) lavc_dec_context->flags |= CODEC_FLAG_GRAY;
|
||||||
|
+ if (vob->decolor) lavc_dec_context->flags |= AV_CODEC_FLAG_GRAY;
|
||||||
|
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
|
||||||
|
lavc_dec_context->error_resilience = 2;
|
||||||
|
#else
|
||||||
|
--- a/filter/filter_resample.c
|
||||||
|
+++ b/filter/filter_resample.c
|
||||||
|
@@ -37,6 +37,7 @@
|
||||||
|
#include "libtc/optstr.h"
|
||||||
|
#include "libtc/tcavcodec.h"
|
||||||
|
#include "libtc/tcmodule-plugin.h"
|
||||||
|
+#include <libavresample/avresample.h>
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
@@ -45,7 +46,7 @@ typedef struct {
|
||||||
|
|
||||||
|
int bytes_per_sample;
|
||||||
|
|
||||||
|
- ReSampleContext *resample_ctx;
|
||||||
|
+ AVAudioResampleContext *resample_ctx;
|
||||||
|
} ResamplePrivateData;
|
||||||
|
|
||||||
|
static const char resample_help[] = ""
|
||||||
|
--- a/import/probe_ffmpeg.c
|
||||||
|
+++ b/import/probe_ffmpeg.c
|
||||||
|
@@ -51,8 +51,8 @@ static void translate_info(const AVFormatContext *ctx, ProbeInfo *info)
|
||||||
|
info->bitrate = st->codec->bit_rate / 1000;
|
||||||
|
info->width = st->codec->width;
|
||||||
|
info->height = st->codec->height;
|
||||||
|
- if (st->r_frame_rate.num > 0 && st->r_frame_rate.den > 0) {
|
||||||
|
- info->fps = av_q2d(st->r_frame_rate);
|
||||||
|
+ if (st->avg_frame_rate.num > 0 && st->avg_frame_rate.den > 0) {
|
||||||
|
+ info->fps = av_q2d(st->avg_frame_rate);
|
||||||
|
} else {
|
||||||
|
/* watch out here */
|
||||||
|
info->fps = 1.0/av_q2d(st->codec->time_base);
|
48
transcode-1.1.7-gcc10.patch
Normal file
48
transcode-1.1.7-gcc10.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
--- a/import/demux_pass.c
|
||||||
|
+++ b/import/demux_pass.c
|
||||||
|
@@ -32,8 +32,6 @@
|
||||||
|
#include "packets.h"
|
||||||
|
|
||||||
|
|
||||||
|
-int gop, gop_pts, gop_cnt;
|
||||||
|
-
|
||||||
|
/* if you listen carefully, then you can hear the desesperate
|
||||||
|
* whisper of this code calling for a rewrite. Or for a redesign.
|
||||||
|
* Or both. -- FR
|
||||||
|
--- a/import/extract_ac3.c
|
||||||
|
+++ b/import/extract_ac3.c
|
||||||
|
@@ -334,7 +334,6 @@
|
||||||
|
FILE *fd;
|
||||||
|
|
||||||
|
#define MAX_BUF 4096
|
||||||
|
-char audio[MAX_BUF];
|
||||||
|
|
||||||
|
|
||||||
|
/* from ac3scan.c */
|
||||||
|
@@ -472,6 +471,8 @@
|
||||||
|
void extract_ac3(info_t *ipipe)
|
||||||
|
{
|
||||||
|
|
||||||
|
+ char audio[MAX_BUF];
|
||||||
|
+
|
||||||
|
int error=0;
|
||||||
|
|
||||||
|
avi_t *avifile;
|
||||||
|
--- a/import/extract_mp3.c
|
||||||
|
+++ b/import/extract_mp3.c
|
||||||
|
@@ -243,7 +243,6 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MAX_BUF 4096
|
||||||
|
-char audio[MAX_BUF];
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------
|
||||||
|
*
|
||||||
|
@@ -258,6 +257,7 @@
|
||||||
|
|
||||||
|
void extract_mp3(info_t *ipipe)
|
||||||
|
{
|
||||||
|
+ char audio[MAX_BUF];
|
||||||
|
|
||||||
|
int error=0;
|
||||||
|
|
47
transcode-1.1.7-glibc-2.32.patch
Normal file
47
transcode-1.1.7-glibc-2.32.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
--- transcode-1.1.7/import/v4l/import_v4l2.c.orig 2020-08-28 08:28:44.311434934 +0000
|
||||||
|
+++ transcode-1.1.7/import/v4l/import_v4l2.c 2020-08-28 08:41:19.279323984 +0000
|
||||||
|
@@ -455,7 +455,7 @@
|
||||||
|
tc_log_warn(MOD_NAME,
|
||||||
|
"driver does not support cropping"
|
||||||
|
"(ioctl(VIDIOC_CROPCAP) returns \"%s\"), disabled",
|
||||||
|
- errno <= sys_nerr ? sys_errlist[errno] : "unknown");
|
||||||
|
+ strerror(errno));
|
||||||
|
return TC_ERROR;
|
||||||
|
}
|
||||||
|
if (verbose_flag > TC_INFO) {
|
||||||
|
@@ -485,7 +485,7 @@
|
||||||
|
tc_log_warn(MOD_NAME,
|
||||||
|
"driver does not support inquiring cropping"
|
||||||
|
" parameters (ioctl(VIDIOC_G_CROP) returns \"%s\")",
|
||||||
|
- errno <= sys_nerr ? sys_errlist[errno] : "unknown");
|
||||||
|
+ strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -513,7 +513,7 @@
|
||||||
|
tc_log_warn(MOD_NAME,
|
||||||
|
"driver does not support inquering cropping"
|
||||||
|
" parameters (ioctl(VIDIOC_G_CROP) returns \"%s\")",
|
||||||
|
- errno <= sys_nerr ? sys_errlist[errno] : "unknown");
|
||||||
|
+ strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (verbose_flag > TC_INFO) {
|
||||||
|
@@ -613,7 +613,7 @@
|
||||||
|
if (err < 0) {
|
||||||
|
if (verbose_flag) {
|
||||||
|
tc_log_warn(MOD_NAME, "driver does not support setting parameters (ioctl(VIDIOC_S_PARM) returns \"%s\")",
|
||||||
|
- errno <= sys_nerr ? sys_errlist[errno] : "unknown");
|
||||||
|
+ strerror(errno));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TC_OK;
|
||||||
|
@@ -628,7 +628,7 @@
|
||||||
|
err = ioctl(vs->video_fd, VIDIOC_G_STD, &stdid);
|
||||||
|
if (err < 0) {
|
||||||
|
tc_log_warn(MOD_NAME, "driver does not support get std (ioctl(VIDIOC_G_STD) returns \"%s\")",
|
||||||
|
- errno <= sys_nerr ? sys_errlist[errno] : "unknown");
|
||||||
|
+ strerror(errno));
|
||||||
|
memset(&stdid, 0, sizeof(v4l2_std_id));
|
||||||
|
}
|
||||||
|
|
794
transcode-1.1.7-imagemagick7.patch
Normal file
794
transcode-1.1.7-imagemagick7.patch
Normal file
@ -0,0 +1,794 @@
|
|||||||
|
http://git.pld-linux.org/?p=packages/transcode.git;a=blob_plain;f=imagemagick7.patch;h=8411f89b843764eff8f4aaddb314d7773d1bcec8;hb=HEAD
|
||||||
|
|
||||||
|
--- transcode-1.1.7/configure.in
|
||||||
|
+++ transcode-1.1.7/configure.in
|
||||||
|
@@ -1105,8 +1105,8 @@
|
||||||
|
dnl ImageMagick
|
||||||
|
dnl
|
||||||
|
IMAGEMAGICK_EXTRA_LIBS="$IMAGEMAGICK_EXTRA_LIBS $($PKG_CONFIG --libs ImageMagick)"
|
||||||
|
-TC_PKG_CHECK(imagemagick, no, IMAGEMAGICK, no, [magick/api.h],
|
||||||
|
- none, InitializeMagick, Wand, [http://www.imagemagick.org/])
|
||||||
|
+TC_PKG_CHECK(imagemagick, no, IMAGEMAGICK, no, [MagickWand/MagickWand.h],
|
||||||
|
+ none, InitializeMagick, MagickWand, [http://www.imagemagick.org/])
|
||||||
|
TC_PKG_HAVE(imagemagick, IMAGEMAGICK)
|
||||||
|
if test x"$have_imagemagick" = x"yes" ; then
|
||||||
|
SAVE_CPPFLAGS="$CPPFLAGS"
|
||||||
|
@@ -1114,6 +1114,7 @@
|
||||||
|
AC_CHECK_HEADER([wand/magick-wand.h],
|
||||||
|
[AC_DEFINE([HAVE_BROKEN_WAND], [1], ["have old wand header"])])
|
||||||
|
CPPFLAGS="$SAVE_CPPFLAGS"
|
||||||
|
+ IMAGEMAGICK_CFLAGS="$IMAGEMAGICK_CFLAGS $($PKG_CONFIG --cflags ImageMagick)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl
|
||||||
|
--- transcode-1.1.7/export/export_im.c
|
||||||
|
+++ transcode-1.1.7/export/export_im.c
|
||||||
|
@@ -23,7 +23,7 @@
|
||||||
|
|
||||||
|
/* Note: because of ImageMagick bogosity, this must be included first, so
|
||||||
|
* we can undefine the PACKAGE_* symbols it splats into our namespace */
|
||||||
|
-#include <magick/api.h>
|
||||||
|
+#include <MagickCore/MagickCore.h>
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
@@ -82,7 +82,7 @@
|
||||||
|
|
||||||
|
codec = (vob->im_v_codec == CODEC_YUV) ? CODEC_YUV : CODEC_RGB;
|
||||||
|
|
||||||
|
- InitializeMagick("");
|
||||||
|
+ MagickCoreGenesis("", MagickFalse);
|
||||||
|
|
||||||
|
image_info=CloneImageInfo((ImageInfo *) NULL);
|
||||||
|
|
||||||
|
@@ -169,8 +169,8 @@
|
||||||
|
MOD_encode
|
||||||
|
{
|
||||||
|
|
||||||
|
- ExceptionInfo exception_info;
|
||||||
|
- char *out_buffer = param->buffer;
|
||||||
|
+ ExceptionInfo *exception_info;
|
||||||
|
+ unsigned char *out_buffer = param->buffer;
|
||||||
|
Image *image=NULL;
|
||||||
|
int res;
|
||||||
|
|
||||||
|
@@ -179,7 +179,7 @@
|
||||||
|
|
||||||
|
if(param->flag == TC_VIDEO) {
|
||||||
|
|
||||||
|
- GetExceptionInfo(&exception_info);
|
||||||
|
+ exception_info = AcquireExceptionInfo();
|
||||||
|
|
||||||
|
res = tc_snprintf(buf2, PATH_MAX, "%s%06d.%s", prefix, counter++, type);
|
||||||
|
if (res < 0) {
|
||||||
|
@@ -193,11 +193,11 @@
|
||||||
|
out_buffer = tmp_buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
- image=ConstituteImage (width, height, "RGB", CharPixel, out_buffer, &exception_info);
|
||||||
|
+ image=ConstituteImage (width, height, "RGB", CharPixel, out_buffer, exception_info);
|
||||||
|
|
||||||
|
strlcpy(image->filename, buf2, MaxTextExtent);
|
||||||
|
|
||||||
|
- WriteImage(image_info, image);
|
||||||
|
+ WriteImage(image_info, image, exception_info);
|
||||||
|
DestroyImage(image);
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
@@ -220,8 +220,7 @@
|
||||||
|
|
||||||
|
if(param->flag == TC_VIDEO) {
|
||||||
|
DestroyImageInfo(image_info);
|
||||||
|
- ConstituteComponentTerminus();
|
||||||
|
- DestroyMagick();
|
||||||
|
+ MagickCoreTerminus();
|
||||||
|
|
||||||
|
free(tmp_buffer);
|
||||||
|
tmp_buffer = NULL;
|
||||||
|
--- transcode-1.1.7/filter/filter_compare.c
|
||||||
|
+++ transcode-1.1.7/filter/filter_compare.c
|
||||||
|
@@ -24,7 +24,7 @@
|
||||||
|
|
||||||
|
/* Note: because of ImageMagick bogosity, this must be included first, so
|
||||||
|
* we can undefine the PACKAGE_* symbols it splats into our namespace */
|
||||||
|
-#include <magick/api.h>
|
||||||
|
+#include <MagickCore/MagickCore.h>
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
@@ -111,9 +111,9 @@
|
||||||
|
Image *pattern, *resized, *orig = 0;
|
||||||
|
ImageInfo *image_info;
|
||||||
|
|
||||||
|
- PixelPacket *pixel_packet;
|
||||||
|
+ Quantum *pixel_quantum;
|
||||||
|
pixelsMask *pixel_last;
|
||||||
|
- ExceptionInfo exception_info;
|
||||||
|
+ ExceptionInfo *exception_info;
|
||||||
|
|
||||||
|
if(ptr->tag & TC_FILTER_GET_CONFIG) {
|
||||||
|
char buf[128];
|
||||||
|
@@ -139,7 +139,7 @@
|
||||||
|
if(ptr->tag & TC_FILTER_INIT)
|
||||||
|
{
|
||||||
|
|
||||||
|
- unsigned int t,r,index;
|
||||||
|
+ unsigned int t,r;
|
||||||
|
pixelsMask *temp;
|
||||||
|
|
||||||
|
compare[instance] = tc_malloc(sizeof(compareData));
|
||||||
|
@@ -190,22 +190,22 @@
|
||||||
|
tc_log_perror(MOD_NAME, "could not open file for writing");
|
||||||
|
}
|
||||||
|
|
||||||
|
- InitializeMagick("");
|
||||||
|
+ MagickCoreGenesis("", MagickFalse);
|
||||||
|
if (verbose > 1)
|
||||||
|
tc_log_info(MOD_NAME, "Magick Initialized successfully");
|
||||||
|
|
||||||
|
- GetExceptionInfo(&exception_info);
|
||||||
|
+ exception_info = AcquireExceptionInfo();
|
||||||
|
image_info = CloneImageInfo ((ImageInfo *) NULL);
|
||||||
|
strlcpy(image_info->filename, pattern_name, MaxTextExtent);
|
||||||
|
if (verbose > 1)
|
||||||
|
tc_log_info(MOD_NAME, "Trying to open image");
|
||||||
|
orig = ReadImage(image_info,
|
||||||
|
- &exception_info);
|
||||||
|
+ exception_info);
|
||||||
|
|
||||||
|
if (orig == (Image *) NULL) {
|
||||||
|
- MagickWarning(exception_info.severity,
|
||||||
|
- exception_info.reason,
|
||||||
|
- exception_info.description);
|
||||||
|
+ MagickWarning(exception_info->severity,
|
||||||
|
+ exception_info->reason,
|
||||||
|
+ exception_info->description);
|
||||||
|
strlcpy(pattern_name, "/dev/null", sizeof(pattern_name));
|
||||||
|
}else{
|
||||||
|
if (verbose > 1)
|
||||||
|
@@ -228,42 +228,41 @@
|
||||||
|
if (orig != NULL){
|
||||||
|
// Flip and resize
|
||||||
|
if (compare[instance]->vob->im_v_codec == CODEC_YUV)
|
||||||
|
- TransformRGBImage(orig,YCbCrColorspace);
|
||||||
|
+ TransformImageColorspace(orig, YCbCrColorspace, exception_info);
|
||||||
|
if (verbose > 1) tc_log_info(MOD_NAME, "Resizing the Image");
|
||||||
|
resized = ResizeImage(orig,
|
||||||
|
compare[instance]->width,
|
||||||
|
compare[instance]->height,
|
||||||
|
GaussianFilter,
|
||||||
|
- 1,
|
||||||
|
- &exception_info);
|
||||||
|
+ exception_info);
|
||||||
|
if (verbose > 1)
|
||||||
|
tc_log_info(MOD_NAME, "Flipping the Image");
|
||||||
|
- pattern = FlipImage(resized, &exception_info);
|
||||||
|
+ pattern = FlipImage(resized, exception_info);
|
||||||
|
if (pattern == (Image *) NULL) {
|
||||||
|
- MagickError (exception_info.severity,
|
||||||
|
- exception_info.reason,
|
||||||
|
- exception_info.description);
|
||||||
|
+ MagickError (exception_info->severity,
|
||||||
|
+ exception_info->reason,
|
||||||
|
+ exception_info->description);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filling the matrix with the pixels values not
|
||||||
|
// alpha
|
||||||
|
|
||||||
|
if (verbose > 1) tc_log_info(MOD_NAME, "GetImagePixels");
|
||||||
|
- pixel_packet = GetImagePixels(pattern,0,0,
|
||||||
|
+ pixel_quantum = GetAuthenticPixels(pattern,0,0,
|
||||||
|
pattern->columns,
|
||||||
|
- pattern->rows);
|
||||||
|
+ pattern->rows,
|
||||||
|
+ exception_info);
|
||||||
|
|
||||||
|
if (verbose > 1) tc_log_info(MOD_NAME, "Filling the Image matrix");
|
||||||
|
for (t = 0; t < pattern->rows; t++)
|
||||||
|
for (r = 0; r < pattern->columns; r++){
|
||||||
|
- index = t*pattern->columns + r;
|
||||||
|
- if (pixel_packet[index].opacity == 0){
|
||||||
|
+ if (GetPixelAlpha(pattern, pixel_quantum) == QuantumRange) {
|
||||||
|
temp=tc_malloc(sizeof(struct pixelsMask));
|
||||||
|
temp->row=t;
|
||||||
|
temp->col=r;
|
||||||
|
- temp->r = (uint8_t)ScaleQuantumToChar(pixel_packet[index].red);
|
||||||
|
- temp->g = (uint8_t)ScaleQuantumToChar(pixel_packet[index].green);
|
||||||
|
- temp->b = (uint8_t)ScaleQuantumToChar(pixel_packet[index].blue);
|
||||||
|
+ temp->r = (uint8_t)ScaleQuantumToChar(GetPixelRed(pattern, pixel_quantum));
|
||||||
|
+ temp->g = (uint8_t)ScaleQuantumToChar(GetPixelGreen(pattern, pixel_quantum));
|
||||||
|
+ temp->b = (uint8_t)ScaleQuantumToChar(GetPixelBlue(pattern, pixel_quantum));
|
||||||
|
temp->next=NULL;
|
||||||
|
|
||||||
|
if (pixel_last == NULL){
|
||||||
|
@@ -274,6 +273,7 @@
|
||||||
|
pixel_last = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ pixel_quantum += GetPixelChannels(pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (verbose)
|
||||||
|
@@ -297,7 +297,7 @@
|
||||||
|
fclose(compare[instance]->results);
|
||||||
|
free(compare[instance]);
|
||||||
|
}
|
||||||
|
- DestroyMagick();
|
||||||
|
+ MagickCoreTerminus();
|
||||||
|
compare[instance]=NULL;
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
--- transcode-1.1.7/filter/filter_logoaway.c
|
||||||
|
+++ transcode-1.1.7/filter/filter_logoaway.c
|
||||||
|
@@ -70,7 +70,7 @@
|
||||||
|
|
||||||
|
/* Note: because of ImageMagick bogosity, this must be included first, so
|
||||||
|
* we can undefine the PACKAGE_* symbols it splats into our namespace */
|
||||||
|
-#include <magick/api.h>
|
||||||
|
+#include <MagickCore/MagickCore.h>
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
@@ -103,10 +103,10 @@
|
||||||
|
|
||||||
|
int alpha;
|
||||||
|
|
||||||
|
- ExceptionInfo exception_info;
|
||||||
|
+ ExceptionInfo *exception_info;
|
||||||
|
Image *image;
|
||||||
|
ImageInfo *image_info;
|
||||||
|
- PixelPacket *pixel_packet;
|
||||||
|
+ Quantum *pixel_packet;
|
||||||
|
|
||||||
|
int dump;
|
||||||
|
char *dump_buf;
|
||||||
|
@@ -174,7 +174,7 @@
|
||||||
|
* instance filter instance
|
||||||
|
* @return void nothing
|
||||||
|
*********************************************************/
|
||||||
|
-static void work_with_rgb_frame(logoaway_data *LD, char *buffer, int width, int height)
|
||||||
|
+static void work_with_rgb_frame(logoaway_data *LD, unsigned char *buffer, int width, int height)
|
||||||
|
{
|
||||||
|
int row, col, i;
|
||||||
|
int xdistance, ydistance, distance_west, distance_north;
|
||||||
|
@@ -201,10 +201,10 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- LD->dumpimage = ConstituteImage(LD->width-LD->xpos, LD->height-LD->ypos, "RGB", CharPixel, LD->dump_buf, &LD->exception_info);
|
||||||
|
+ LD->dumpimage = ConstituteImage(LD->width-LD->xpos, LD->height-LD->ypos, "RGB", CharPixel, LD->dump_buf, LD->exception_info);
|
||||||
|
tc_snprintf(LD->dumpimage->filename, MaxTextExtent, "dump[%d].png", LD->id);
|
||||||
|
|
||||||
|
- WriteImage(LD->dumpimage_info, LD->dumpimage);
|
||||||
|
+ WriteImage(LD->dumpimage_info, LD->dumpimage, LD->exception_info);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(LD->mode) {
|
||||||
|
@@ -218,27 +218,28 @@
|
||||||
|
for(row=LD->ypos; row<LD->height; ++row) {
|
||||||
|
for(col=LD->xpos; col<LD->width; ++col) {
|
||||||
|
|
||||||
|
+ Quantum *pixel = LD->pixel_packet + (row*LD->width+col)*GetPixelChannels(LD->image);
|
||||||
|
buf_off = ((height-row)*width+col) * 3;
|
||||||
|
pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos);
|
||||||
|
/* R */
|
||||||
|
if (!LD->alpha) {
|
||||||
|
buffer[buf_off +0] = LD->rcolor;
|
||||||
|
} else {
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
|
||||||
|
buffer[buf_off +0] = alpha_blending(buffer[buf_off +0], LD->rcolor, alpha_px);
|
||||||
|
}
|
||||||
|
/* G */
|
||||||
|
if (!LD->alpha) {
|
||||||
|
buffer[buf_off +1] = LD->gcolor;
|
||||||
|
} else {
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].green);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelGreen(LD->image, pixel));
|
||||||
|
buffer[buf_off +1] = alpha_blending(buffer[buf_off +1], LD->gcolor, alpha_px);
|
||||||
|
}
|
||||||
|
/* B */
|
||||||
|
if (!LD->alpha) {
|
||||||
|
buffer[buf_off +2] = LD->bcolor;
|
||||||
|
} else {
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].blue);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelBlue(LD->image, pixel));
|
||||||
|
buffer[buf_off +2] = alpha_blending(buffer[buf_off +2], LD->bcolor, alpha_px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -268,6 +269,7 @@
|
||||||
|
buf_off = ((height-row)*width+col) * 3;
|
||||||
|
|
||||||
|
pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos);
|
||||||
|
+ Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image);
|
||||||
|
|
||||||
|
/* R */
|
||||||
|
hcalc = alpha_blending(buffer[buf_off_xpos +0], buffer[buf_off_width +0], alpha_hori);
|
||||||
|
@@ -276,7 +278,7 @@
|
||||||
|
if (!LD->alpha) {
|
||||||
|
buffer[buf_off +0] = new_px;
|
||||||
|
} else {
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
|
||||||
|
buffer[buf_off +0] = alpha_blending(buffer[buf_off +0], new_px, alpha_px);
|
||||||
|
}
|
||||||
|
/* G */
|
||||||
|
@@ -286,7 +288,7 @@
|
||||||
|
if (!LD->alpha) {
|
||||||
|
buffer[buf_off +1] = new_px;
|
||||||
|
} else {
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].green);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelGreen(LD->image, pixel));
|
||||||
|
buffer[buf_off +1] = alpha_blending(buffer[buf_off +1], new_px, alpha_px);
|
||||||
|
}
|
||||||
|
/* B */
|
||||||
|
@@ -296,7 +298,7 @@
|
||||||
|
if (!LD->alpha) {
|
||||||
|
buffer[buf_off +2] = new_px;
|
||||||
|
} else {
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelBlue(LD->image, pixel));
|
||||||
|
buffer[buf_off +2] = alpha_blending(buffer[buf_off +2], new_px, alpha_px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -327,28 +329,28 @@
|
||||||
|
buf_off_height = ((height-LD->height)*width+col) * 3;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i)*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (col-i>LD->xpos))
|
||||||
|
i++;
|
||||||
|
buf_off_xpos = ((height-row)*width + col-i) * 3;
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i)*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (col+i<LD->width))
|
||||||
|
i++;
|
||||||
|
buf_off_width = ((height-row)*width + col+i) * 3;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i*(LD->width-LD->xpos)].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (row-i>LD->ypos))
|
||||||
|
i++;
|
||||||
|
buf_off_ypos = (height*width*3)-((row-i)*width - col) * 3;
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i*(LD->width-LD->xpos)].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (row+i<LD->height))
|
||||||
|
i++;
|
||||||
|
buf_off_height = (height*width*3)-((row+i)*width - col) * 3;
|
||||||
|
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + pkt_off*GetPixelChannels(LD->image)));
|
||||||
|
/* R */
|
||||||
|
hcalc = alpha_blending(buffer[buf_off_xpos +0], buffer[buf_off_width +0], alpha_hori);
|
||||||
|
vcalc = alpha_blending(buffer[buf_off_ypos +0], buffer[buf_off_height +0], alpha_vert);
|
||||||
|
@@ -405,7 +407,7 @@
|
||||||
|
* instance filter instance
|
||||||
|
* @return void nothing
|
||||||
|
*********************************************************/
|
||||||
|
-static void work_with_yuv_frame(logoaway_data *LD, char *buffer, int width, int height)
|
||||||
|
+static void work_with_yuv_frame(logoaway_data *LD, unsigned char *buffer, int width, int height)
|
||||||
|
{
|
||||||
|
int row, col, i;
|
||||||
|
int craddr, cbaddr;
|
||||||
|
@@ -431,10 +433,11 @@
|
||||||
|
|
||||||
|
buf_off = row*width+col;
|
||||||
|
pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos);
|
||||||
|
+ Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image);
|
||||||
|
if (!LD->alpha) {
|
||||||
|
buffer[buf_off] = LD->ycolor;
|
||||||
|
} else {
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
|
||||||
|
buffer[buf_off] = alpha_blending(buffer[buf_off], LD->ycolor, alpha_px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -446,8 +449,9 @@
|
||||||
|
|
||||||
|
buf_off = row*width/2+col;
|
||||||
|
pkt_off = (row*2-LD->ypos) * (LD->width-LD->xpos) + (col*2-LD->xpos);
|
||||||
|
+ Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image);
|
||||||
|
/* sic */
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
|
||||||
|
if (!LD->alpha) {
|
||||||
|
buffer[craddr + buf_off] = LD->ucolor;
|
||||||
|
buffer[cbaddr + buf_off] = LD->vcolor;
|
||||||
|
@@ -483,10 +487,11 @@
|
||||||
|
buf_off_height = LD->height*width+col;
|
||||||
|
|
||||||
|
pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos);
|
||||||
|
+ Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image);
|
||||||
|
|
||||||
|
hcalc = alpha_blending(buffer[buf_off_xpos], buffer[buf_off_width], alpha_hori);
|
||||||
|
vcalc = alpha_blending(buffer[buf_off_ypos], buffer[buf_off_height], alpha_vert);
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
|
||||||
|
new_px = (hcalc*LD->xweight + vcalc*LD->yweight)/100;
|
||||||
|
if (!LD->alpha) {
|
||||||
|
buffer[buf_off] = new_px;
|
||||||
|
@@ -517,7 +522,8 @@
|
||||||
|
buf_off_height = LD->height/2*width/2+col;
|
||||||
|
|
||||||
|
pkt_off = (row*2-LD->ypos) * (LD->width-LD->xpos) + (col*2-LD->xpos);
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
|
||||||
|
+ Quantum *pixel = LD->pixel_packet + pkt_off*GetPixelChannels(LD->image);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, pixel));
|
||||||
|
/* sic, reuse red alpha_px */
|
||||||
|
|
||||||
|
hcalc = alpha_blending(buffer[craddr + buf_off_xpos], buffer[craddr + buf_off_width], alpha_hori);
|
||||||
|
@@ -560,30 +566,30 @@
|
||||||
|
pkt_off = (row-LD->ypos) * (LD->width-LD->xpos) + (col-LD->xpos);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i)*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (col-i>LD->xpos))
|
||||||
|
i++;
|
||||||
|
buf_off_xpos = (row*width + col-i);
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i)*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (col+i<LD->width))
|
||||||
|
i++;
|
||||||
|
buf_off_width = (row*width + col+i);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i*(LD->width-LD->xpos)].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (row-i>LD->ypos))
|
||||||
|
i++;
|
||||||
|
buf_off_ypos = ((row-i)*width + col);
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i*(LD->width-LD->xpos)].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (row+i<LD->height))
|
||||||
|
i++;
|
||||||
|
buf_off_height = ((row+i)*width + col);
|
||||||
|
|
||||||
|
hcalc = alpha_blending( buffer[buf_off_xpos], buffer[buf_off_width], alpha_hori );
|
||||||
|
vcalc = alpha_blending( buffer[buf_off_ypos], buffer[buf_off_height], alpha_vert );
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + pkt_off*GetPixelChannels(LD->image)));
|
||||||
|
new_px = (hcalc*LD->xweight + vcalc*LD->yweight)/100;
|
||||||
|
buffer[buf_off] = alpha_blending(buffer[buf_off], new_px, alpha_px);
|
||||||
|
}
|
||||||
|
@@ -603,23 +609,23 @@
|
||||||
|
alpha_hori = xdistance * distance_west;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i)*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (col-i>LD->xpos))
|
||||||
|
i++;
|
||||||
|
buf_off_xpos = (row*width/2 + col-i);
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i)*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (col+i<LD->width))
|
||||||
|
i++;
|
||||||
|
buf_off_width = (row*width/2 + col+i);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off-i*(LD->width-LD->xpos)].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off-i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (row-i>LD->ypos))
|
||||||
|
i++;
|
||||||
|
buf_off_ypos = ((row-i)*width/2 + col);
|
||||||
|
i = 0;
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off+i*(LD->width-LD->xpos)].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + (pkt_off+i*(LD->width-LD->xpos))*GetPixelChannels(LD->image)));
|
||||||
|
while ((alpha_px != 255) && (row+i<LD->height))
|
||||||
|
i++;
|
||||||
|
buf_off_height = ((row+i)*width/2 + col);
|
||||||
|
@@ -630,7 +636,7 @@
|
||||||
|
|
||||||
|
pkt_off = (row*2-LD->ypos) * (LD->width-LD->xpos) + (col*2-LD->xpos);
|
||||||
|
|
||||||
|
- alpha_px = (uint8_t)ScaleQuantumToChar(LD->pixel_packet[pkt_off].red);
|
||||||
|
+ alpha_px = (uint8_t)ScaleQuantumToChar(GetPixelRed(LD->image, LD->pixel_packet + pkt_off*GetPixelChannels(LD->image)));
|
||||||
|
/* sic: reuse the red component */
|
||||||
|
hcalc = alpha_blending(buffer[craddr + buf_off_xpos], buffer[craddr + buf_off_width], alpha_hori);
|
||||||
|
vcalc = alpha_blending(buffer[craddr + buf_off_ypos], buffer[craddr + buf_off_height], alpha_vert);
|
||||||
|
@@ -815,17 +821,17 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
if((data[instance]->alpha) || (data[instance]->dump)) {
|
||||||
|
- InitializeMagick("");
|
||||||
|
- GetExceptionInfo(&data[instance]->exception_info);
|
||||||
|
+ MagickCoreGenesis("", MagickFalse);
|
||||||
|
+ data[instance]->exception_info = AcquireExceptionInfo();
|
||||||
|
|
||||||
|
if(data[instance]->alpha) {
|
||||||
|
data[instance]->image_info = CloneImageInfo((ImageInfo *) NULL);
|
||||||
|
|
||||||
|
strlcpy(data[instance]->image_info->filename, data[instance]->file, MaxTextExtent);
|
||||||
|
- data[instance]->image = ReadImage(data[instance]->image_info, &data[instance]->exception_info);
|
||||||
|
+ data[instance]->image = ReadImage(data[instance]->image_info, data[instance]->exception_info);
|
||||||
|
if (data[instance]->image == (Image *) NULL) {
|
||||||
|
tc_log_error(MOD_NAME, "\n");
|
||||||
|
- MagickWarning (data[instance]->exception_info.severity, data[instance]->exception_info.reason, data[instance]->exception_info.description);
|
||||||
|
+ MagickWarning (data[instance]->exception_info->severity, data[instance]->exception_info->reason, data[instance]->exception_info->description);
|
||||||
|
return TC_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -835,7 +841,7 @@
|
||||||
|
return TC_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
- data[instance]->pixel_packet = GetImagePixels(data[instance]->image, 0, 0, data[instance]->image->columns, data[instance]->image->rows);
|
||||||
|
+ data[instance]->pixel_packet = GetAuthenticPixels(data[instance]->image, 0, 0, data[instance]->image->columns, data[instance]->image->rows, data[instance]->exception_info);
|
||||||
|
}
|
||||||
|
if(data[instance]->dump) {
|
||||||
|
if((data[instance]->dump_buf = tc_malloc ((data[instance]->width-data[instance]->xpos)*(data[instance]->height-data[instance]->ypos)*3)) == NULL)
|
||||||
|
@@ -865,10 +871,9 @@
|
||||||
|
if (data[instance]->dumpimage != (Image *)NULL) {
|
||||||
|
DestroyImage(data[instance]->dumpimage);
|
||||||
|
DestroyImageInfo(data[instance]->dumpimage_info);
|
||||||
|
- ConstituteComponentTerminus();
|
||||||
|
}
|
||||||
|
- DestroyExceptionInfo(&data[instance]->exception_info);
|
||||||
|
- DestroyMagick();
|
||||||
|
+ DestroyExceptionInfo(data[instance]->exception_info);
|
||||||
|
+ MagickCoreTerminus();
|
||||||
|
|
||||||
|
if(data[instance]->dump_buf) free(data[instance]->dump_buf);
|
||||||
|
if(data[instance]) free(data[instance]);
|
||||||
|
--- transcode-1.1.7/filter/filter_logo.c
|
||||||
|
+++ transcode-1.1.7/filter/filter_logo.c
|
||||||
|
@@ -36,7 +36,7 @@
|
||||||
|
|
||||||
|
/* Note: because of ImageMagick bogosity, this must be included first, so
|
||||||
|
* we can undefine the PACKAGE_* symbols it splats into our namespace */
|
||||||
|
-#include <magick/api.h>
|
||||||
|
+#include <MagickCore/MagickCore.h>
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
@@ -227,7 +227,8 @@
|
||||||
|
ImageFormat ifmt,
|
||||||
|
int do_rgbswap)
|
||||||
|
{
|
||||||
|
- PixelPacket *pixel_packet;
|
||||||
|
+ ExceptionInfo *exception_info;
|
||||||
|
+ Quantum *pixel_packet;
|
||||||
|
uint8_t *dst_ptr = dst;
|
||||||
|
|
||||||
|
int row, col;
|
||||||
|
@@ -246,16 +247,17 @@
|
||||||
|
}
|
||||||
|
g_off = 1;
|
||||||
|
|
||||||
|
- pixel_packet = GetImagePixels(src, 0, 0, width, height);
|
||||||
|
+ exception_info = AcquireExceptionInfo();
|
||||||
|
+ pixel_packet = GetAuthenticPixels(src, 0, 0, width, height, exception_info);
|
||||||
|
|
||||||
|
for (row = 0; row < height; row++) {
|
||||||
|
for (col = 0; col < width; col++) {
|
||||||
|
- *(dst_ptr + r_off) = (uint8_t)ScaleQuantumToChar(pixel_packet->red);
|
||||||
|
- *(dst_ptr + g_off) = (uint8_t)ScaleQuantumToChar(pixel_packet->green);
|
||||||
|
- *(dst_ptr + b_off) = (uint8_t)ScaleQuantumToChar(pixel_packet->blue);
|
||||||
|
+ *(dst_ptr + r_off) = (uint8_t)ScaleQuantumToChar(GetPixelRed(src, pixel_packet));
|
||||||
|
+ *(dst_ptr + g_off) = (uint8_t)ScaleQuantumToChar(GetPixelGreen(src, pixel_packet));
|
||||||
|
+ *(dst_ptr + b_off) = (uint8_t)ScaleQuantumToChar(GetPixelBlue(src, pixel_packet));
|
||||||
|
|
||||||
|
dst_ptr += 3;
|
||||||
|
- pixel_packet++;
|
||||||
|
+ pixel_packet += GetPixelChannels(src);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -310,7 +312,7 @@
|
||||||
|
Image *timg;
|
||||||
|
Image *nimg;
|
||||||
|
ImageInfo *image_info;
|
||||||
|
- ExceptionInfo exception_info;
|
||||||
|
+ ExceptionInfo *exception_info;
|
||||||
|
|
||||||
|
int rgb_off = 0;
|
||||||
|
|
||||||
|
@@ -376,19 +378,19 @@
|
||||||
|
* semaphore.
|
||||||
|
*/
|
||||||
|
magick_usecount++;
|
||||||
|
- if (!IsMagickInstantiated()) {
|
||||||
|
- InitializeMagick("");
|
||||||
|
+ if (!IsMagickCoreInstantiated()) {
|
||||||
|
+ MagickCoreGenesis("", MagickFalse);
|
||||||
|
}
|
||||||
|
|
||||||
|
- GetExceptionInfo(&exception_info);
|
||||||
|
+ exception_info = AcquireExceptionInfo();
|
||||||
|
image_info = CloneImageInfo((ImageInfo *) NULL);
|
||||||
|
strlcpy(image_info->filename, mfd->file, MaxTextExtent);
|
||||||
|
|
||||||
|
- mfd->image = ReadImage(image_info, &exception_info);
|
||||||
|
+ mfd->image = ReadImage(image_info, exception_info);
|
||||||
|
if (mfd->image == (Image *) NULL) {
|
||||||
|
- MagickWarning(exception_info.severity,
|
||||||
|
- exception_info.reason,
|
||||||
|
- exception_info.description);
|
||||||
|
+ MagickWarning(exception_info->severity,
|
||||||
|
+ exception_info->reason,
|
||||||
|
+ exception_info->description);
|
||||||
|
strlcpy(mfd->file, "/dev/null", PATH_MAX);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -413,11 +415,11 @@
|
||||||
|
|
||||||
|
while (mfd->images != (Image *)NULL) {
|
||||||
|
if (mfd->flip || flip) {
|
||||||
|
- timg = FlipImage(mfd->images, &exception_info);
|
||||||
|
+ timg = FlipImage(mfd->images, exception_info);
|
||||||
|
if (timg == (Image *) NULL) {
|
||||||
|
- MagickError(exception_info.severity,
|
||||||
|
- exception_info.reason,
|
||||||
|
- exception_info.description);
|
||||||
|
+ MagickError(exception_info->severity,
|
||||||
|
+ exception_info->reason,
|
||||||
|
+ exception_info->description);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
AppendImageToList(&nimg, timg);
|
||||||
|
@@ -573,7 +575,7 @@
|
||||||
|
/* Set up image/video coefficient lookup tables */
|
||||||
|
if (img_coeff_lookup[0] < 0) {
|
||||||
|
int i;
|
||||||
|
- float maxrgbval = (float)MaxRGB; // from ImageMagick
|
||||||
|
+ float maxrgbval = (float)QuantumRange; // from ImageMagick
|
||||||
|
|
||||||
|
for (i = 0; i <= MAX_UINT8_VAL; i++) {
|
||||||
|
float x = (float)ScaleCharToQuantum(i);
|
||||||
|
@@ -615,8 +617,8 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
magick_usecount--;
|
||||||
|
- if (magick_usecount == 0 && IsMagickInstantiated()) {
|
||||||
|
- DestroyMagick();
|
||||||
|
+ if (magick_usecount == 0 && IsMagickCoreInstantiated()) {
|
||||||
|
+ MagickCoreTerminus();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
@@ -638,7 +640,8 @@
|
||||||
|
&& (ptr->tag & TC_VIDEO)
|
||||||
|
&& !(ptr->attributes & TC_FRAME_IS_SKIPPED)
|
||||||
|
) {
|
||||||
|
- PixelPacket *pixel_packet;
|
||||||
|
+ ExceptionInfo *exception_info;
|
||||||
|
+ Quantum *pixel_packet;
|
||||||
|
uint8_t *video_buf;
|
||||||
|
|
||||||
|
int do_fade = 0;
|
||||||
|
@@ -647,6 +650,7 @@
|
||||||
|
|
||||||
|
/* Note: ImageMagick defines opacity = 0 as fully visible, and
|
||||||
|
* opacity = MaxRGB as fully transparent.
|
||||||
|
+ * alpha rather than opacity (0 transparent; QuantumRange opaque).
|
||||||
|
*/
|
||||||
|
Quantum opacity;
|
||||||
|
|
||||||
|
@@ -682,9 +686,11 @@
|
||||||
|
mfd->cur_delay = mfd->images->delay * vob->fps/100;
|
||||||
|
}
|
||||||
|
|
||||||
|
- pixel_packet = GetImagePixels(mfd->images, 0, 0,
|
||||||
|
+ exception_info = AcquireExceptionInfo();
|
||||||
|
+ pixel_packet = GetAuthenticPixels(mfd->images, 0, 0,
|
||||||
|
mfd->images->columns,
|
||||||
|
- mfd->images->rows);
|
||||||
|
+ mfd->images->rows,
|
||||||
|
+ exception_info);
|
||||||
|
|
||||||
|
if (vob->im_v_codec == CODEC_RGB) {
|
||||||
|
unsigned long r_off, g_off, b_off;
|
||||||
|
@@ -702,30 +708,30 @@
|
||||||
|
video_buf = ptr->video_buf + 3 * ((row + mfd->posy) * vob->ex_v_width + mfd->posx);
|
||||||
|
|
||||||
|
for (col = 0; col < mfd->image->columns; col++) {
|
||||||
|
- opacity = pixel_packet->opacity;
|
||||||
|
+ opacity = QuantumRange - GetPixelAlpha(mfd->images, pixel_packet);
|
||||||
|
|
||||||
|
if (do_fade)
|
||||||
|
- opacity += (Quantum)((MaxRGB - opacity) * fade_coeff);
|
||||||
|
+ opacity += (Quantum)((QuantumRange - opacity) * fade_coeff);
|
||||||
|
|
||||||
|
if (opacity == 0) {
|
||||||
|
- *(video_buf + r_off) = ScaleQuantumToChar(pixel_packet->red);
|
||||||
|
- *(video_buf + g_off) = ScaleQuantumToChar(pixel_packet->green);
|
||||||
|
- *(video_buf + b_off) = ScaleQuantumToChar(pixel_packet->blue);
|
||||||
|
- } else if (opacity < MaxRGB) {
|
||||||
|
+ *(video_buf + r_off) = ScaleQuantumToChar(GetPixelRed(mfd->images, pixel_packet));
|
||||||
|
+ *(video_buf + g_off) = ScaleQuantumToChar(GetPixelGreen(mfd->images, pixel_packet));
|
||||||
|
+ *(video_buf + b_off) = ScaleQuantumToChar(GetPixelBlue(mfd->images, pixel_packet));
|
||||||
|
+ } else if (opacity < QuantumRange) {
|
||||||
|
unsigned char opacity_uchar = ScaleQuantumToChar(opacity);
|
||||||
|
img_coeff = img_coeff_lookup[opacity_uchar];
|
||||||
|
vid_coeff = vid_coeff_lookup[opacity_uchar];
|
||||||
|
|
||||||
|
*(video_buf + r_off) = (uint8_t)((*(video_buf + r_off)) * vid_coeff)
|
||||||
|
- + (uint8_t)(ScaleQuantumToChar(pixel_packet->red) * img_coeff);
|
||||||
|
+ + (uint8_t)(ScaleQuantumToChar(GetPixelRed(mfd->images, pixel_packet)) * img_coeff);
|
||||||
|
*(video_buf + g_off) = (uint8_t)((*(video_buf + g_off)) * vid_coeff)
|
||||||
|
- + (uint8_t)(ScaleQuantumToChar(pixel_packet->green) * img_coeff);
|
||||||
|
+ + (uint8_t)(ScaleQuantumToChar(GetPixelGreen(mfd->images, pixel_packet)) * img_coeff);
|
||||||
|
*(video_buf + b_off) = (uint8_t)((*(video_buf + b_off)) * vid_coeff)
|
||||||
|
- + (uint8_t)(ScaleQuantumToChar(pixel_packet->blue) * img_coeff);
|
||||||
|
+ + (uint8_t)(ScaleQuantumToChar(GetPixelBlue(mfd->images, pixel_packet)) * img_coeff);
|
||||||
|
}
|
||||||
|
|
||||||
|
video_buf += 3;
|
||||||
|
- pixel_packet++;
|
||||||
|
+ pixel_packet += GetPixelChannels(mfd->images);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { /* !RGB */
|
||||||
|
@@ -745,10 +751,10 @@
|
||||||
|
vid_pixel_V = vid_pixel_U + vid_size/4;
|
||||||
|
for (col = 0; col < mfd->images->columns; col++) {
|
||||||
|
int do_UV_pixels = (mfd->grayout == 0 && !(row % 2) && !(col % 2)) ? 1 : 0;
|
||||||
|
- opacity = pixel_packet->opacity;
|
||||||
|
+ opacity = QuantumRange - GetPixelAlpha(mfd->images, pixel_packet);
|
||||||
|
|
||||||
|
if (do_fade)
|
||||||
|
- opacity += (Quantum)((MaxRGB - opacity) * fade_coeff);
|
||||||
|
+ opacity += (Quantum)((QuantumRange - opacity) * fade_coeff);
|
||||||
|
|
||||||
|
if (opacity == 0) {
|
||||||
|
*vid_pixel_Y = *img_pixel_Y;
|
||||||
|
@@ -756,7 +762,7 @@
|
||||||
|
*vid_pixel_U = *img_pixel_U;
|
||||||
|
*vid_pixel_V = *img_pixel_V;
|
||||||
|
}
|
||||||
|
- } else if (opacity < MaxRGB) {
|
||||||
|
+ } else if (opacity < QuantumRange) {
|
||||||
|
unsigned char opacity_uchar = ScaleQuantumToChar(opacity);
|
||||||
|
img_coeff = img_coeff_lookup[opacity_uchar];
|
||||||
|
vid_coeff = vid_coeff_lookup[opacity_uchar];
|
||||||
|
--- transcode-1.1.7/import/import_im.c
|
||||||
|
+++ transcode-1.1.7/import/import_im.c
|
||||||
|
@@ -34,9 +34,9 @@
|
||||||
|
/* Note: because of ImageMagick bogosity, this must be included first, so
|
||||||
|
* we can undefine the PACKAGE_* symbols it splats into our namespace */
|
||||||
|
#ifdef HAVE_BROKEN_WAND
|
||||||
|
-#include <wand/magick-wand.h>
|
||||||
|
+#include <MagickWand/MagickWand.h>
|
||||||
|
#else /* we have a SANE wand header */
|
||||||
|
-#include <wand/MagickWand.h>
|
||||||
|
+#include <MagickWand/MagickWand.h>
|
||||||
|
#endif /* HAVE_BROKEN_WAND */
|
||||||
|
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
--- transcode-1.1.7/import/import_imlist.c
|
||||||
|
+++ transcode-1.1.7/import/import_imlist.c
|
||||||
|
@@ -34,9 +34,9 @@
|
||||||
|
/* Note: because of ImageMagick bogosity, this must be included first, so
|
||||||
|
* we can undefine the PACKAGE_* symbols it splats into our namespace */
|
||||||
|
#ifdef HAVE_BROKEN_WAND
|
||||||
|
-#include <wand/magick-wand.h>
|
||||||
|
+#include <MagickWand/MagickWand.h>
|
||||||
|
#else /* we have a SANE wand header */
|
||||||
|
-#include <wand/MagickWand.h>
|
||||||
|
+#include <MagickWand/MagickWand.h>
|
||||||
|
#endif /* HAVE_BROKEN_WAND */
|
||||||
|
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
--- transcode-1.1.7/import/probe_im.c
|
||||||
|
+++ transcode-1.1.7/import/probe_im.c
|
||||||
|
@@ -40,9 +40,9 @@
|
||||||
|
# undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
# ifdef HAVE_BROKEN_WAND
|
||||||
|
-# include <wand/magick-wand.h>
|
||||||
|
+# include <MagickWand/MagickWand.h>
|
||||||
|
# else /* we have a SANE wand header */
|
||||||
|
-# include <wand/MagickWand.h>
|
||||||
|
+# include <MagickWand/MagickWand.h>
|
||||||
|
# endif /* HAVE_BROKEN_WAND */
|
||||||
|
|
||||||
|
# undef PACKAGE_BUGREPORT
|
20
transcode-1.1.7-swresample.patch
Normal file
20
transcode-1.1.7-swresample.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
--- transcode-1.1.7/filter/filter_resample.c.orig 2018-12-15 20:00:16.111657609 +0000
|
||||||
|
+++ transcode-1.1.7/filter/filter_resample.c 2018-12-15 20:01:13.141800445 +0000
|
||||||
|
@@ -37,7 +37,7 @@
|
||||||
|
#include "libtc/optstr.h"
|
||||||
|
#include "libtc/tcavcodec.h"
|
||||||
|
#include "libtc/tcmodule-plugin.h"
|
||||||
|
-#include <libavresample/avresample.h>
|
||||||
|
+#include <libswresample/swresample.h>
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
@@ -46,7 +46,7 @@
|
||||||
|
|
||||||
|
int bytes_per_sample;
|
||||||
|
|
||||||
|
- AVAudioResampleContext *resample_ctx;
|
||||||
|
+ SwrContext *resample_ctx;
|
||||||
|
} ResamplePrivateData;
|
||||||
|
|
||||||
|
static const char resample_help[] = ""
|
@ -1,6 +1,6 @@
|
|||||||
Name: transcode
|
Name: transcode
|
||||||
Version: 1.1.7
|
Version: 1.1.7
|
||||||
Release: 5mamba
|
Release: 6mamba
|
||||||
Summary: A text-console utility for video stream processing
|
Summary: A text-console utility for video stream processing
|
||||||
Group: Applications/Multimedia
|
Group: Applications/Multimedia
|
||||||
Vendor: openmamba
|
Vendor: openmamba
|
||||||
@ -11,6 +11,12 @@ Source: https://bitbucket.org/france/transcode-tcforge/downloads/transcod
|
|||||||
Patch1: %{name}-1.1.7-ffmpeg-0.10.patch
|
Patch1: %{name}-1.1.7-ffmpeg-0.10.patch
|
||||||
Patch2: transcode-1.1.7-ffmpeg-2.patch
|
Patch2: transcode-1.1.7-ffmpeg-2.patch
|
||||||
Patch3: transcode-1.1.7-freetype-2.5.patch
|
Patch3: transcode-1.1.7-freetype-2.5.patch
|
||||||
|
Patch4: transcode-1.1.7-gcc10.patch
|
||||||
|
Patch5: transcode-1.1.7-glibc-2.32.patch
|
||||||
|
Patch6: transcode-1.1.7-imagemagick7.patch
|
||||||
|
Patch7: transcode-1.1.7-ffmpeg3.patch
|
||||||
|
Patch8: transcode-1.1.7-ffmpeg4.patch
|
||||||
|
Patch9: transcode-1.1.7-swresample.patch
|
||||||
License: GPL
|
License: GPL
|
||||||
## AUTOBUILDREQ-BEGIN
|
## AUTOBUILDREQ-BEGIN
|
||||||
BuildRequires: glibc-devel
|
BuildRequires: glibc-devel
|
||||||
@ -19,7 +25,9 @@ BuildRequires: libMagick-devel
|
|||||||
BuildRequires: libSDL-devel
|
BuildRequires: libSDL-devel
|
||||||
BuildRequires: libSM-devel
|
BuildRequires: libSM-devel
|
||||||
BuildRequires: libX11-devel
|
BuildRequires: libX11-devel
|
||||||
|
BuildRequires: libXau-devel
|
||||||
BuildRequires: libXaw-devel
|
BuildRequires: libXaw-devel
|
||||||
|
BuildRequires: libXdmcp-devel
|
||||||
BuildRequires: libXext-devel
|
BuildRequires: libXext-devel
|
||||||
BuildRequires: libXpm-devel
|
BuildRequires: libXpm-devel
|
||||||
BuildRequires: libXt-devel
|
BuildRequires: libXt-devel
|
||||||
@ -28,21 +36,42 @@ BuildRequires: liba52dec-devel
|
|||||||
BuildRequires: libalsa-devel
|
BuildRequires: libalsa-devel
|
||||||
BuildRequires: libavcodec-ffmpeg-devel
|
BuildRequires: libavcodec-ffmpeg-devel
|
||||||
BuildRequires: libavformat-ffmpeg-devel
|
BuildRequires: libavformat-ffmpeg-devel
|
||||||
|
BuildRequires: libbrotli-devel
|
||||||
|
BuildRequires: libbsd-devel
|
||||||
|
BuildRequires: libbzip2-devel
|
||||||
|
BuildRequires: libdirectfb-devel
|
||||||
BuildRequires: libdv-devel
|
BuildRequires: libdv-devel
|
||||||
BuildRequires: libdvdread-devel
|
BuildRequires: libdvdread-devel
|
||||||
|
BuildRequires: libexpat-devel
|
||||||
|
BuildRequires: libfaad2-devel
|
||||||
|
BuildRequires: libfftw-devel
|
||||||
|
BuildRequires: libfontconfig-devel
|
||||||
BuildRequires: libfreetype-devel
|
BuildRequires: libfreetype-devel
|
||||||
|
BuildRequires: libglib-devel
|
||||||
BuildRequires: libgomp-devel
|
BuildRequires: libgomp-devel
|
||||||
BuildRequires: libjpeg-devel
|
BuildRequires: libgraphite2-devel
|
||||||
|
BuildRequires: libharfbuzz-devel
|
||||||
BuildRequires: liblame-devel
|
BuildRequires: liblame-devel
|
||||||
|
BuildRequires: liblcms2-devel
|
||||||
|
BuildRequires: liblqr-devel
|
||||||
|
BuildRequires: libltdl-devel
|
||||||
|
BuildRequires: liblzma-devel
|
||||||
BuildRequires: liblzo-devel
|
BuildRequires: liblzo-devel
|
||||||
BuildRequires: libmjpegtools-devel
|
BuildRequires: libmjpegtools-devel
|
||||||
BuildRequires: libogg-devel
|
BuildRequires: libogg-devel
|
||||||
|
BuildRequires: libpcre-devel
|
||||||
|
BuildRequires: libpng-devel
|
||||||
BuildRequires: libpostproc-ffmpeg-devel
|
BuildRequires: libpostproc-ffmpeg-devel
|
||||||
BuildRequires: libquicktime-devel
|
BuildRequires: libquicktime-devel
|
||||||
|
BuildRequires: libstdc++6-devel
|
||||||
BuildRequires: libtheora-devel
|
BuildRequires: libtheora-devel
|
||||||
|
BuildRequires: libts-devel
|
||||||
|
BuildRequires: libuuid-devel
|
||||||
BuildRequires: libvorbis-devel
|
BuildRequires: libvorbis-devel
|
||||||
|
BuildRequires: libxcb-devel
|
||||||
BuildRequires: libxml2-devel
|
BuildRequires: libxml2-devel
|
||||||
BuildRequires: libz-devel
|
BuildRequires: libz-devel
|
||||||
|
BuildRequires: libzip-devel
|
||||||
## AUTOBUILDREQ-END
|
## AUTOBUILDREQ-END
|
||||||
BuildRequires: libmpeg3-devel
|
BuildRequires: libmpeg3-devel
|
||||||
#%ifarch %ix86 x86_64
|
#%ifarch %ix86 x86_64
|
||||||
@ -51,8 +80,7 @@ BuildRequires: libmpeg3-devel
|
|||||||
BuildRequires: liblqr-devel
|
BuildRequires: liblqr-devel
|
||||||
BuildRequires: libltdl-devel
|
BuildRequires: libltdl-devel
|
||||||
Requires: vorbis-tools
|
Requires: vorbis-tools
|
||||||
Requires: libmjpegtools-devel >= 2.0.0
|
Requires: libmjpegtools-devel >= 2.2.1
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-root
|
|
||||||
|
|
||||||
# FIXME:
|
# FIXME:
|
||||||
# hardware support
|
# hardware support
|
||||||
@ -77,11 +105,21 @@ Decoding and encoding is done by loading modules that are responsible for feedin
|
|||||||
It supports elementary video and audio frame transformations, including de-interlacing or fast resizing of video frames and loading of external filters.
|
It supports elementary video and audio frame transformations, including de-interlacing or fast resizing of video frames and loading of external filters.
|
||||||
It's modular concept is intended to provide flexibility and easy user extensibility to include other video/audio codecs or file types.
|
It's modular concept is intended to provide flexibility and easy user extensibility to include other video/audio codecs or file types.
|
||||||
|
|
||||||
|
%debug_package
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
#%patch1 -p0
|
#%patch1 -p0
|
||||||
%patch2 -p1
|
#%patch2 -p1
|
||||||
%patch3 -p1
|
#%patch3 -p1
|
||||||
|
%patch4 -p1 -b .gcc10
|
||||||
|
%patch5 -p1 -b .glibc-2.32
|
||||||
|
%patch6 -p1 -b .imagemagick7
|
||||||
|
%patch7 -p1 -b .ffmpeg3
|
||||||
|
%patch8 -p1 -b .ffmpeg4
|
||||||
|
%patch9 -p1 -b .swresample
|
||||||
|
sed -e 's|freetype/ftglyph.h|freetype2/freetype/ftglyph.h|' -i filter/subtitler/load_font.c
|
||||||
|
autoreconf -fi
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure \
|
%configure \
|
||||||
@ -173,6 +211,9 @@ rm -fr %{buildroot}%{_datadir}/doc/transcode/
|
|||||||
#%doc docs/html/*.html docs/html/*.php docs/html/*.png
|
#%doc docs/html/*.html docs/html/*.php docs/html/*.png
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jan 04 2022 Silvan Calarco <silvan.calarco@mambasoft.it> 1.1.7-6mamba
|
||||||
|
- rebuilt with libmjpegtool 2.2.1 and patches
|
||||||
|
|
||||||
* Thu May 15 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 1.1.7-5mamba
|
* Thu May 15 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 1.1.7-5mamba
|
||||||
- ffmpeg 2.2 rebuild
|
- ffmpeg 2.2 rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user