[FFmpeg-cvslog] aacdec_usac: remove custom rate_idx and use standard variable for it

2024-06-21 Thread Lynne
ffmpeg | branch: master | Lynne  | Sun Jun 16 10:28:05 2024 
+0200| [d45e20c37b1144d9c4ff08732a94fee0786dc0b5] | committer: Lynne

aacdec_usac: remove custom rate_idx and use standard variable for it

m4ac.sampling_index is what aacdec.c uses.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d45e20c37b1144d9c4ff08732a94fee0786dc0b5
---

 libavcodec/aac/aacdec.h  |  1 -
 libavcodec/aac/aacdec_usac.c | 35 ++-
 2 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/libavcodec/aac/aacdec.h b/libavcodec/aac/aacdec.h
index d1a80e9ac1..e5a79a7139 100644
--- a/libavcodec/aac/aacdec.h
+++ b/libavcodec/aac/aacdec.h
@@ -350,7 +350,6 @@ typedef struct AACUsacElemConfig {
 
 typedef struct AACUSACConfig {
 uint8_t core_sbr_frame_len_idx; /* coreSbrFrameLengthIndex */
-uint8_t rate_idx;
 uint16_t core_frame_len;
 uint16_t stream_identifier;
 
diff --git a/libavcodec/aac/aacdec_usac.c b/libavcodec/aac/aacdec_usac.c
index eb0e7d3659..e5504117d0 100644
--- a/libavcodec/aac/aacdec_usac.c
+++ b/libavcodec/aac/aacdec_usac.c
@@ -316,7 +316,7 @@ int ff_aac_usac_config_decode(AACDecContext *ac, 
AVCodecContext *avctx,
   GetBitContext *gb, OutputConfiguration *oc,
   int channel_config)
 {
-int ret, idx;
+int ret;
 uint8_t freq_idx;
 uint8_t channel_config_idx;
 int nb_channels = 0;
@@ -334,20 +334,10 @@ int ff_aac_usac_config_decode(AACDecContext *ac, 
AVCodecContext *avctx,
 freq_idx = get_bits(gb, 5); /* usacSamplingFrequencyIndex */
 if (freq_idx == 0x1f) {
 samplerate = get_bits(gb, 24); /* usacSamplingFrequency */
-
-/* Try to match up an index for the custom sample rate.
- * TODO: not sure if correct */
-for (idx = 0; idx < /* FF_ARRAY_ELEMS(ff_aac_usac_samplerate) */ 32; 
idx++) {
-if (ff_aac_usac_samplerate[idx] >= samplerate)
-break;
-}
-idx = FFMIN(idx, /* FF_ARRAY_ELEMS(ff_aac_usac_samplerate) */ 32 - 1);
-usac->rate_idx = idx;
 } else {
 samplerate = ff_aac_usac_samplerate[freq_idx];
 if (samplerate < 0)
 return AVERROR(EINVAL);
-usac->rate_idx = freq_idx;
 }
 
 m4ac->sample_rate = avctx->sample_rate = samplerate;
@@ -364,6 +354,8 @@ int ff_aac_usac_config_decode(AACDecContext *ac, 
AVCodecContext *avctx,
 usac->core_sbr_frame_len_idx == 4 ? 1 :
 0;
 
+m4ac->sampling_index = ff_aac_sample_rate_idx(m4ac->sample_rate);
+
 channel_config_idx = get_bits(gb, 5); /* channelConfigurationIndex */
 if (!channel_config_idx) {
 /* UsacChannelConfig() */
@@ -751,18 +743,19 @@ static int setup_sce(AACDecContext *ac, 
SingleChannelElement *sce,
 {
 AACUsacElemData *ue = &sce->ue;
 IndividualChannelStream *ics = &sce->ics;
+const int sampling_index = ac->oc[1].m4ac.sampling_index;
 
 /* Setup window parameters */
 ics->prev_num_window_groups = FFMAX(ics->num_window_groups, 1);
 if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
 if (usac->core_frame_len == 768) {
-ics->swb_offset = ff_swb_offset_96[usac->rate_idx];
-ics->num_swb = ff_aac_num_swb_96[usac->rate_idx];
+ics->swb_offset = ff_swb_offset_96[sampling_index];
+ics->num_swb = ff_aac_num_swb_96[sampling_index];
 } else {
-ics->swb_offset = ff_swb_offset_128[usac->rate_idx];
-ics->num_swb = ff_aac_num_swb_128[usac->rate_idx];
+ics->swb_offset = ff_swb_offset_128[sampling_index];
+ics->num_swb = ff_aac_num_swb_128[sampling_index];
 }
-ics->tns_max_bands = ff_tns_max_bands_usac_128[usac->rate_idx];
+ics->tns_max_bands = ff_tns_max_bands_usac_128[sampling_index];
 
 /* Setup scalefactor grouping. 7 bit mask. */
 ics->num_window_groups = 0;
@@ -779,13 +772,13 @@ static int setup_sce(AACDecContext *ac, 
SingleChannelElement *sce,
 ics->num_windows = 8;
 } else {
 if (usac->core_frame_len == 768) {
-ics->swb_offset = ff_swb_offset_768[usac->rate_idx];
-ics->num_swb = ff_aac_num_swb_768[usac->rate_idx];
+ics->swb_offset = ff_swb_offset_768[sampling_index];
+ics->num_swb = ff_aac_num_swb_768[sampling_index];
 } else {
-ics->swb_offset = ff_swb_offset_1024[usac->rate_idx];
-ics->num_swb = ff_aac_num_swb_1024[usac->rate_idx];
+ics->swb_offset = ff_swb_offset_1024[sampling_index];
+ics->num_swb = ff_aac_num_swb_1024[sampling_index];
 }
-ics->tns_max_bands = ff_tns_max_bands_usac_1024[usac->rate_idx];
+ics->tns_max_bands = ff_tns_max_bands_usac_1024[sampling_index];
 
 ics->group_len[0] = 1;
 ics->num_window_groups = 1;

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg

[FFmpeg-cvslog] aac: expose ff_aac_sample_rate_idx() in aac.h

2024-06-21 Thread Lynne
ffmpeg | branch: master | Lynne  | Sun Jun 16 10:20:56 2024 
+0200| [50e5b78b79f5b908e249ca5aca23be7be23bedad] | committer: Lynne

aac: expose ff_aac_sample_rate_idx() in aac.h

The rate index is a value important to both encoders and decoders.
USAC needs it as well, so put it into the shared main header.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=50e5b78b79f5b908e249ca5aca23be7be23bedad
---

 libavcodec/aac.h| 16 
 libavcodec/aac/aacdec.c | 18 +-
 2 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/libavcodec/aac.h b/libavcodec/aac.h
index fc6d1361b2..78026a5887 100644
--- a/libavcodec/aac.h
+++ b/libavcodec/aac.h
@@ -103,4 +103,20 @@ typedef struct Pulse {
 int amp[4];
 } Pulse;
 
+static inline int ff_aac_sample_rate_idx(int rate)
+{
+ if (92017 <= rate) return 0;
+else if (75132 <= rate) return 1;
+else if (55426 <= rate) return 2;
+else if (46009 <= rate) return 3;
+else if (37566 <= rate) return 4;
+else if (27713 <= rate) return 5;
+else if (23004 <= rate) return 6;
+else if (18783 <= rate) return 7;
+else if (13856 <= rate) return 8;
+else if (11502 <= rate) return 9;
+else if (9391  <= rate) return 10;
+elsereturn 11;
+}
+
 #endif /* AVCODEC_AAC_H */
diff --git a/libavcodec/aac/aacdec.c b/libavcodec/aac/aacdec.c
index eecb6d8f3d..ea2ba84a80 100644
--- a/libavcodec/aac/aacdec.c
+++ b/libavcodec/aac/aacdec.c
@@ -1095,22 +1095,6 @@ static int decode_audio_specific_config(AACDecContext 
*ac,
sync_extension);
 }
 
-static int sample_rate_idx (int rate)
-{
- if (92017 <= rate) return 0;
-else if (75132 <= rate) return 1;
-else if (55426 <= rate) return 2;
-else if (46009 <= rate) return 3;
-else if (37566 <= rate) return 4;
-else if (27713 <= rate) return 5;
-else if (23004 <= rate) return 6;
-else if (18783 <= rate) return 7;
-else if (13856 <= rate) return 8;
-else if (11502 <= rate) return 9;
-else if (9391  <= rate) return 10;
-elsereturn 11;
-}
-
 static av_cold int decode_close(AVCodecContext *avctx)
 {
 AACDecContext *ac = avctx->priv_data;
@@ -1211,7 +1195,7 @@ av_cold int ff_aac_decode_init(AVCodecContext *avctx)
 uint8_t layout_map[MAX_ELEM_ID*4][3];
 int layout_map_tags;
 
-sr = sample_rate_idx(avctx->sample_rate);
+sr = ff_aac_sample_rate_idx(avctx->sample_rate);
 ac->oc[1].m4ac.sampling_index = sr;
 ac->oc[1].m4ac.channels = avctx->ch_layout.nb_channels;
 ac->oc[1].m4ac.sbr = -1;

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] aacdec_ac: fix an overread

2024-06-21 Thread Lynne
ffmpeg | branch: master | Lynne  | Sun Jun 16 10:22:25 2024 
+0200| [89de2f0de1a41349fe827c00c8f52ca3c12594ad] | committer: Lynne

aacdec_ac: fix an overread

Fixes reading state->last[i + 1] in ff_aac_ac_get_context for the
last array member.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=89de2f0de1a41349fe827c00c8f52ca3c12594ad
---

 libavcodec/aac/aacdec_ac.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/aac/aacdec_ac.h b/libavcodec/aac/aacdec_ac.h
index 0b98c0f0d9..b8d4ade4c6 100644
--- a/libavcodec/aac/aacdec_ac.h
+++ b/libavcodec/aac/aacdec_ac.h
@@ -25,7 +25,7 @@
 #include "libavcodec/get_bits.h"
 
 typedef struct AACArithState {
-uint8_t last[512 /* 2048 / 4 */];
+uint8_t last[512 /* 2048 / 4 */ + 1];
 int last_len;
 uint8_t cur[4];
 uint16_t state_pre;

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] aacdec_usac: rename noise_scale to noise_bands

2024-06-21 Thread Lynne
ffmpeg | branch: master | Lynne  | Sun Jun 16 10:25:26 2024 
+0200| [a381cbc7c77bc9477d9c42607a4e849aa20cdd06] | committer: Lynne

aacdec_usac: rename noise_scale to noise_bands

This was a typo.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a381cbc7c77bc9477d9c42607a4e849aa20cdd06
---

 libavcodec/aac/aacdec.h  | 2 +-
 libavcodec/aac/aacdec_usac.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/aac/aacdec.h b/libavcodec/aac/aacdec.h
index 86faf6454a..d1a80e9ac1 100644
--- a/libavcodec/aac/aacdec.h
+++ b/libavcodec/aac/aacdec.h
@@ -315,7 +315,7 @@ typedef struct AACUsacElemConfig {
 
 uint8_t freq_scale; /* dflt_freq_scale */
 uint8_t alter_scale : 1; /* dflt_alter_scale */
-uint8_t noise_scale; /* dflt_noise_scale */
+uint8_t noise_bands; /* dflt_noise_bands */
 
 uint8_t limiter_bands; /* dflt_limiter_bands */
 uint8_t limiter_gains; /* dflt_limiter_gains */
diff --git a/libavcodec/aac/aacdec_usac.c b/libavcodec/aac/aacdec_usac.c
index 065bc869d9..eb0e7d3659 100644
--- a/libavcodec/aac/aacdec_usac.c
+++ b/libavcodec/aac/aacdec_usac.c
@@ -162,11 +162,11 @@ static void decode_usac_sbr_data(AACUsacElemConfig *e, 
GetBitContext *gb)
 
 e->sbr.dflt.freq_scale = 2;
 e->sbr.dflt.alter_scale = 1;
-e->sbr.dflt.noise_scale = 2;
+e->sbr.dflt.noise_bands = 2;
 if (header_extra1) {
 e->sbr.dflt.freq_scale = get_bits(gb, 2); /* dflt_freq_scale */
 e->sbr.dflt.alter_scale = get_bits1(gb); /* dflt_alter_scale */
-e->sbr.dflt.noise_scale = get_bits(gb, 2); /* dflt_noise_scale */
+e->sbr.dflt.noise_bands = get_bits(gb, 2); /* dflt_noise_bands */
 }
 
 e->sbr.dflt.limiter_bands = 2;

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] aacdec_usac: apply specification fix M55715

2024-06-21 Thread Lynne
ffmpeg | branch: master | Lynne  | Wed Jun 12 14:32:22 2024 
+0200| [1c3545f053bea8d919608f47d02bc095a006411f] | committer: Lynne

aacdec_usac: apply specification fix M55715

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1c3545f053bea8d919608f47d02bc095a006411f
---

 libavcodec/aac/aacdec_usac.c | 19 +++
 1 file changed, 19 insertions(+)

diff --git a/libavcodec/aac/aacdec_usac.c b/libavcodec/aac/aacdec_usac.c
index 98e8c1c0bc..065bc869d9 100644
--- a/libavcodec/aac/aacdec_usac.c
+++ b/libavcodec/aac/aacdec_usac.c
@@ -835,6 +835,11 @@ static int decode_usac_stereo_info(AACDecContext *ac, 
AACUSACConfig *usac,
 tns_active = get_bits1(gb);
 us->common_window = get_bits1(gb);
 
+if (!us->common_window || indep_flag) {
+memset(us->prev_alpha_q_re, 0, sizeof(us->prev_alpha_q_re));
+memset(us->prev_alpha_q_im, 0, sizeof(us->prev_alpha_q_im));
+}
+
 if (us->common_window) {
 /* ics_info() */
 ics1->window_sequence[1] = ics1->window_sequence[0];
@@ -845,6 +850,20 @@ static int decode_usac_stereo_info(AACDecContext *ac, 
AACUSACConfig *usac,
 ics2->use_kb_window[1] = ics2->use_kb_window[0];
 ics1->use_kb_window[0] = ics2->use_kb_window[0] = get_bits1(gb);
 
+/* If there's a change in the transform sequence, zero out last frame's
+ * stereo prediction coefficients */
+if ((ics1->window_sequence[0] == EIGHT_SHORT_SEQUENCE &&
+ ics1->window_sequence[1] != EIGHT_SHORT_SEQUENCE) ||
+(ics1->window_sequence[1] == EIGHT_SHORT_SEQUENCE &&
+ ics1->window_sequence[0] != EIGHT_SHORT_SEQUENCE) ||
+(ics2->window_sequence[0] == EIGHT_SHORT_SEQUENCE &&
+ ics2->window_sequence[1] != EIGHT_SHORT_SEQUENCE) ||
+(ics2->window_sequence[1] == EIGHT_SHORT_SEQUENCE &&
+ ics2->window_sequence[0] != EIGHT_SHORT_SEQUENCE)) {
+memset(us->prev_alpha_q_re, 0, sizeof(us->prev_alpha_q_re));
+memset(us->prev_alpha_q_im, 0, sizeof(us->prev_alpha_q_im));
+}
+
 if (ics1->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
 ics1->max_sfb = ics2->max_sfb = get_bits(gb, 4);
 ue1->scale_factor_grouping = ue2->scale_factor_grouping = 
get_bits(gb, 7);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-cvslog] avformat/mov: use the updated default value for horizontal_disparity_adjustment in the eyes box

2024-06-21 Thread James Almer
ffmpeg | branch: master | James Almer  | Fri Jun 21 14:08:47 
2024 -0300| [127545350fcc57781ba66bf7698904f4a0d2387c] | committer: James Almer

avformat/mov: use the updated default value for horizontal_disparity_adjustment 
in the eyes box

Signed-off-by: James Almer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=127545350fcc57781ba66bf7698904f4a0d2387c
---

 libavformat/mov.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 2d5b24b9a9..f08fec3fb6 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -6548,7 +6548,7 @@ static int mov_read_eyes(MOVContext *c, AVIOContext *pb, 
MOVAtom atom)
 uint32_t tag, baseline = 0;
 enum AVStereo3DView view = AV_STEREO3D_VIEW_PACKED;
 enum AVStereo3DPrimaryEye primary_eye = AV_PRIMARY_EYE_NONE;
-AVRational horizontal_disparity_adjustment = { 0, 0 };
+AVRational horizontal_disparity_adjustment = { 0, 1 };
 
 if (c->fc->nb_streams < 1)
 return 0;

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".