mirror of
https://github.com/termux/termux-packages.git
synced 2025-01-31 21:22:27 +00:00
96616601d0
Patches copied from f0ead348a0
124 lines
6.0 KiB
Diff
124 lines
6.0 KiB
Diff
Copied from https://salsa.debian.org/multimedia-team/vlc/-/commit/f0ead348a0d2739c6e097938e7fd20db39c6fc59
|
|
|
|
From: Ilkka Ollakka <ileoo@videolan.org>
|
|
Date: Tue, 4 Jul 2023 16:52:38 +0300
|
|
Subject: avcodec: use p_enc audio channels instead of context channels in
|
|
encoder
|
|
|
|
Allows to have less conditions in code when adding new ch_layout use
|
|
|
|
(cherry-picked from commit 29747a8abb98ba53a64aa6761983891eeed2e0e4)
|
|
---
|
|
modules/codec/avcodec/encoder.c | 24 ++++++++++++------------
|
|
1 file changed, 12 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
|
|
index 4919ccf..52848de 100644
|
|
--- a/modules/codec/avcodec/encoder.c
|
|
+++ b/modules/codec/avcodec/encoder.c
|
|
@@ -790,7 +790,7 @@ int InitVideoEnc( vlc_object_t *p_this )
|
|
}
|
|
}
|
|
}
|
|
- if( i_channels_src != p_context->channels )
|
|
+ if( i_channels_src != p_enc->fmt_out.audio.i_channels )
|
|
msg_Err( p_enc, "Channel layout not understood" );
|
|
|
|
p_sys->i_channels_to_reorder =
|
|
@@ -897,7 +897,7 @@ int InitVideoEnc( vlc_object_t *p_this )
|
|
if( ret )
|
|
{
|
|
if( p_enc->fmt_in.i_cat != AUDIO_ES ||
|
|
- (p_context->channels <= 2 && i_codec_id != AV_CODEC_ID_MP2
|
|
+ (p_enc->fmt_out.audio.i_channels <= 2 && i_codec_id != AV_CODEC_ID_MP2
|
|
&& i_codec_id != AV_CODEC_ID_MP3) )
|
|
errmsg:
|
|
{
|
|
@@ -922,7 +922,7 @@ errmsg:
|
|
goto error;
|
|
}
|
|
|
|
- if( p_context->channels > 2 )
|
|
+ if( p_enc->fmt_out.audio.i_channels > 2 )
|
|
{
|
|
p_context->channels = 2;
|
|
p_context->channel_layout = channel_mask[p_context->channels][1];
|
|
@@ -1028,7 +1028,7 @@ errmsg:
|
|
p_context->frame_size :
|
|
AV_INPUT_BUFFER_MIN_SIZE;
|
|
p_sys->i_buffer_out = av_samples_get_buffer_size(NULL,
|
|
- p_sys->p_context->channels, p_sys->i_frame_size,
|
|
+ p_enc->fmt_out.audio.i_channels, p_sys->i_frame_size,
|
|
p_sys->p_context->sample_fmt, DEFAULT_ALIGN);
|
|
p_sys->p_buffer = av_malloc( p_sys->i_buffer_out );
|
|
if ( unlikely( p_sys->p_buffer == NULL ) )
|
|
@@ -1278,7 +1278,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
|
|
{
|
|
block_t *p_block = NULL;
|
|
//How much we need to copy from new packet
|
|
- const size_t leftover = leftover_samples * p_sys->p_context->channels * p_sys->i_sample_bytes;
|
|
+ const size_t leftover = leftover_samples * p_enc->fmt_out.audio.i_channels * p_sys->i_sample_bytes;
|
|
|
|
av_frame_unref( p_sys->frame );
|
|
p_sys->frame->format = p_sys->p_context->sample_fmt;
|
|
@@ -1301,7 +1301,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
|
|
// We need to deinterleave from p_aout_buf to p_buffer the leftover bytes
|
|
if( p_sys->b_planar )
|
|
aout_Deinterleave( p_sys->p_interleave_buf, p_sys->p_buffer,
|
|
- p_sys->i_frame_size, p_sys->p_context->channels, p_enc->fmt_in.i_codec );
|
|
+ p_sys->i_frame_size, p_enc->fmt_out.audio.i_channels, p_enc->fmt_in.i_codec );
|
|
else
|
|
memcpy( p_sys->p_buffer + buffer_delay, p_aout_buf->p_buffer, leftover);
|
|
|
|
@@ -1319,7 +1319,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
|
|
memset( p_sys->p_buffer + (leftover+buffer_delay), 0, padding_size );
|
|
buffer_delay += padding_size;
|
|
}
|
|
- if( avcodec_fill_audio_frame( p_sys->frame, p_sys->p_context->channels,
|
|
+ if( avcodec_fill_audio_frame( p_sys->frame, p_enc->fmt_out.audio.i_channels,
|
|
p_sys->p_context->sample_fmt, p_sys->b_planar ? p_sys->p_interleave_buf : p_sys->p_buffer,
|
|
p_sys->i_buffer_out,
|
|
DEFAULT_ALIGN) < 0 )
|
|
@@ -1349,7 +1349,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
|
|
|
|
//i_bytes_left is amount of bytes we get
|
|
i_samples_left = p_aout_buf ? p_aout_buf->i_nb_samples : 0;
|
|
- buffer_delay = p_sys->i_samples_delay * p_sys->i_sample_bytes * p_sys->p_context->channels;
|
|
+ buffer_delay = p_sys->i_samples_delay * p_sys->i_sample_bytes * p_enc->fmt_out.audio.i_channels;
|
|
|
|
//p_sys->i_buffer_out = p_sys->i_frame_size * chan * p_sys->i_sample_bytes
|
|
//Calculate how many bytes we would need from current buffer to fill frame
|
|
@@ -1418,12 +1418,12 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
|
|
p_sys->frame->channels = p_sys->p_context->channels;
|
|
|
|
const int in_bytes = p_sys->frame->nb_samples *
|
|
- p_sys->p_context->channels * p_sys->i_sample_bytes;
|
|
+ p_enc->fmt_out.audio.i_channels* p_sys->i_sample_bytes;
|
|
|
|
if( p_sys->b_planar )
|
|
{
|
|
aout_Deinterleave( p_sys->p_buffer, p_aout_buf->p_buffer,
|
|
- p_sys->frame->nb_samples, p_sys->p_context->channels, p_enc->fmt_in.i_codec );
|
|
+ p_sys->frame->nb_samples, p_enc->fmt_out.audio.i_channels, p_enc->fmt_in.i_codec );
|
|
|
|
}
|
|
else
|
|
@@ -1431,7 +1431,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
|
|
memcpy(p_sys->p_buffer, p_aout_buf->p_buffer, in_bytes);
|
|
}
|
|
|
|
- if( avcodec_fill_audio_frame( p_sys->frame, p_sys->p_context->channels,
|
|
+ if( avcodec_fill_audio_frame( p_sys->frame, p_enc->fmt_out.audio.i_channels,
|
|
p_sys->p_context->sample_fmt,
|
|
p_sys->p_buffer,
|
|
p_sys->i_buffer_out,
|
|
@@ -1457,7 +1457,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
|
|
if( p_aout_buf->i_nb_samples > 0 )
|
|
{
|
|
memcpy( p_sys->p_buffer + buffer_delay, p_aout_buf->p_buffer,
|
|
- p_aout_buf->i_nb_samples * p_sys->i_sample_bytes * p_sys->p_context->channels);
|
|
+ p_aout_buf->i_nb_samples * p_sys->i_sample_bytes * p_enc->fmt_out.audio.i_channels);
|
|
p_sys->i_samples_delay += p_aout_buf->i_nb_samples;
|
|
}
|
|
|