mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
opusenc: add apply_phase_inv option
By popular request. Does the same as in libopusenc.
This commit is contained in:
parent
c0344cbfb0
commit
2502e13b07
@ -627,7 +627,7 @@ static av_always_inline uint32_t quant_band_template(CeltPVQ *pvq, CeltFrame *f,
|
|||||||
}
|
}
|
||||||
} else if (stereo) {
|
} else if (stereo) {
|
||||||
if (quant) {
|
if (quant) {
|
||||||
inv = itheta > 8192;
|
inv = f->apply_phase_inv ? itheta > 8192 : 0;
|
||||||
if (inv) {
|
if (inv) {
|
||||||
for (i = 0; i < N; i++)
|
for (i = 0; i < N; i++)
|
||||||
Y[i] *= -1;
|
Y[i] *= -1;
|
||||||
|
@ -691,7 +691,7 @@ static av_cold int opus_encode_init(AVCodecContext *avctx)
|
|||||||
s->frame[i].avctx = s->avctx;
|
s->frame[i].avctx = s->avctx;
|
||||||
s->frame[i].seed = 0;
|
s->frame[i].seed = 0;
|
||||||
s->frame[i].pvq = s->pvq;
|
s->frame[i].pvq = s->pvq;
|
||||||
s->frame[i].apply_phase_inv = 1;
|
s->frame[i].apply_phase_inv = s->options.apply_phase_inv;
|
||||||
s->frame[i].block[0].emph_coeff = s->frame[i].block[1].emph_coeff = 0.0f;
|
s->frame[i].block[0].emph_coeff = s->frame[i].block[1].emph_coeff = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -701,6 +701,7 @@ static av_cold int opus_encode_init(AVCodecContext *avctx)
|
|||||||
#define OPUSENC_FLAGS AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM
|
#define OPUSENC_FLAGS AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM
|
||||||
static const AVOption opusenc_options[] = {
|
static const AVOption opusenc_options[] = {
|
||||||
{ "opus_delay", "Maximum delay in milliseconds", offsetof(OpusEncContext, options.max_delay_ms), AV_OPT_TYPE_FLOAT, { .dbl = OPUS_MAX_LOOKAHEAD }, 2.5f, OPUS_MAX_LOOKAHEAD, OPUSENC_FLAGS, "max_delay_ms" },
|
{ "opus_delay", "Maximum delay in milliseconds", offsetof(OpusEncContext, options.max_delay_ms), AV_OPT_TYPE_FLOAT, { .dbl = OPUS_MAX_LOOKAHEAD }, 2.5f, OPUS_MAX_LOOKAHEAD, OPUSENC_FLAGS, "max_delay_ms" },
|
||||||
|
{ "apply_phase_inv", "Apply intensity stereo phase inversion", offsetof(OpusEncContext, options.apply_phase_inv), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, OPUSENC_FLAGS, "apply_phase_inv" },
|
||||||
{ NULL },
|
{ NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
typedef struct OpusEncOptions {
|
typedef struct OpusEncOptions {
|
||||||
float max_delay_ms;
|
float max_delay_ms;
|
||||||
|
int apply_phase_inv;
|
||||||
} OpusEncOptions;
|
} OpusEncOptions;
|
||||||
|
|
||||||
typedef struct OpusPacketInfo {
|
typedef struct OpusPacketInfo {
|
||||||
|
Loading…
Reference in New Issue
Block a user