Commit Graph

1319 Commits

Author SHA1 Message Date
Fraunhofer IIS FDK 67cae74f74 Read uniDrcGainExtension element only if all DRC gain sequences are parsed correctly.
Prevent error return during parsing of incomplete uniDrcGain() element. This fixes unnecessary concealment of frames for AAC in case a uniDrcGain() is provided, but the uniDrcConfig() element is not available.

Bug: 176246647
Test: atest android.media.cts.DecoderTestAacFormat android.media.cts.DecoderTestXheAac android.media.cts.DecoderTestAacDrc
Change-Id: I5ae343eaea481774c53240dbce4da0f4ff06cd1d
2021-01-14 15:32:32 -08:00
Fraunhofer IIS FDK 3495808c83 Fix USAC time domain limiter latency at config change.
We have observed quality problems regarding config switching for USAC streams. Crossfading did not consider the USAC time domain limiter latency correctly. The limiter memory still contained the last part of the frame before the config change.
With this patch we were able to improve the quality by moving the limiter processing to the end of the processing chain (crossfade -> DRC -> limiter). By that we don't have to consider the limiter latency at the crossfader anymore and can resolve the quality issue.
Bug: 176246647
Test: atest android.media.cts.DecoderTestAacFormat android.media.cts.DecoderTestXheAac android.media.cts.DecoderTestAacDrc
Change-Id: I0dfd3b76ff2b0daf495ad406283f56a39982ad8f

Change-Id: I26f5da65ef8344602007e180e837820c6a25f173
2021-01-14 15:26:24 -08:00
Fraunhofer IIS FDK 9a48d47998 Consider TNS headroom for complex prediction.
Bug: 176246647
Test: atest android.media.cts.DecoderTestAacFormat android.media.cts.DecoderTestXheAac android.media.cts.DecoderTestAacDrc
Change-Id: I8261106b98d7e7c5a8a2af38585c726285ea8623
2021-01-14 15:13:58 -08:00
Cindy Zhou 5e70d8a295 aac remove diag
Removing diag mode since it's only required for debugging purposes.
Bug: 158010610
Test: n/a

Change-Id: I597880ef5b63d12d2971237d02406faceda7e623
2021-01-13 12:28:12 -08:00
Kris Alder 9ee8fd5559 Merge "Added aac_enc_fuzzer" am: 093573a634 am: a85ab74b62 am: c46a377538
Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1527719

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ib842fadf4278b74faa59e83ef8401b154ec487d0
2021-01-13 02:09:37 +00:00
Kris Alder c46a377538 Merge "Added aac_enc_fuzzer" am: 093573a634 am: a85ab74b62
Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1527719

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: If878046841ee4408530b47a76cb829b8b2c3c80a
2021-01-13 01:49:03 +00:00
Kris Alder a85ab74b62 Merge "Added aac_enc_fuzzer" am: 093573a634
Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1527719

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ib3295eaed1814e256668526f4ea9c41743dd4431
2021-01-13 01:33:01 +00:00
Kris Alder 093573a634 Merge "Added aac_enc_fuzzer" 2021-01-13 01:03:20 +00:00
Cindy Zhou 57c3244459 Merge "Enable cfi for aac" am: 5690f9c39f am: 738df3d018 am: 524e89257c
Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1518238

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ifa9c52a5ca9ddc6ca5edc35166afdc4a1f5b5788
2021-01-08 19:25:02 +00:00
Cindy Zhou 524e89257c Merge "Enable cfi for aac" am: 5690f9c39f am: 738df3d018
Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1518238

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ib5d834ad315cad4006cb839776dd03d795fdc27e
2021-01-08 19:07:00 +00:00
Cindy Zhou 738df3d018 Merge "Enable cfi for aac" am: 5690f9c39f
Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1518238

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I3b4ff4c9a2e1ccd1139a37ac2a537467efee9583
2021-01-08 18:17:46 +00:00
Cindy Zhou 5690f9c39f Merge "Enable cfi for aac" 2021-01-08 17:47:26 +00:00
Treehugger Robot b0872f98d3 Merge "Adjust VBR mode depending on given peak bitrate and fix crash recovery usage." am: 5d8224586c am: 3152997588 am: a108a6cafa
Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1542709

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I53fc9b09bc32fef1563294c1a6277fd599952cc3
2021-01-08 16:38:11 +00:00
Treehugger Robot a108a6cafa Merge "Adjust VBR mode depending on given peak bitrate and fix crash recovery usage." am: 5d8224586c am: 3152997588
Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1542709

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Id89e1389e52aaf7ed338f7cf431ed5e9d1fba9f8
2021-01-08 16:25:06 +00:00
Treehugger Robot 3152997588 Merge "Adjust VBR mode depending on given peak bitrate and fix crash recovery usage." am: 5d8224586c
Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1542709

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I676c98594c21af87992da5e4286d8c83f6a11098
2021-01-08 16:10:59 +00:00
Treehugger Robot 5d8224586c Merge "Adjust VBR mode depending on given peak bitrate and fix crash recovery usage." 2021-01-08 15:47:48 +00:00
Fraunhofer IIS FDK e499f9485e Adjust VBR mode depending on given peak bitrate and fix crash recovery usage.
Operating the FDK encoder in A2DP with variable bitrate mode
configuration resulted in unexpected encoder return value AACENC_ENCODE_ERROR.

Due to peak bitrate restriction the encoder quite often runs into requantization.
In case the bitrate constraint is not fulfilled, the so-called crash recovery is
used as final emergency step. The crash recovery reduces the overall bit
consumption considering the given number of bits to be saved. The bit difference
is extracted from audio element structures. In VBR mode the element wise bit
consumption state was not updated since there is typically no bitrate limitation
required.

The patch solves the choppy audio problems and increases audio quality for
AAC VBR encoding.

The changes in FDKaacEnc_QCMain() ensure that audio element bit info is always
updated. This is achieved by always calling FDKaacEnc_BitResRedistribution()
and FDKaacEnc_prepareBitDistribution() with maxBitsPerFrame variable as total
bits parameter.
Furthermore, VBR assumes a certain target bitrate which is used for internal
configuration and limitations. In case the peak bitrate parameter is less than
the VBR mode target bitrate the maximum of both bitrate configurations was used.

The function FDKaacEnc_AdjustVBRBitrateMode() is added to adjust the encoder
internal VBR mode to a desired target bitrate less than given peak bitrate.
It is possible that the peak bitrate is very close to the desired target bitrate.
The virtual available bitreservoir is quite low and the encoder would run quite
often into requantization with needless audio quality reduction. In such a
configuration, it is a better choice to use the CBR targeted threshold adaption
to avoid audio quality reduction.

In FDKaacEnc_Initialize(), there was already a bitResMode selection depending
on available bitreservoir for CBR. This selection will now also be used for VBR.
In case the bitResMode is AACENC_BR_MODE_FULL and VBR mode is selected, the VBR
threshold adaption is used. Otherwise, CBR threshold adaption strategy is used
and therefore, no unnecessary fill bits are written.

Bug: 161400526
Test: see bug
Change-Id: I1865f817180150da6add2623a64f1a102622784a
2021-01-08 10:52:53 +08:00
Jean-Michel Trivi 0c275a3341 Merge "Introduce additional sanity checks to validate program config element." 2020-12-28 19:49:14 +00:00
TreeHugger Robot 31608d9a1f Merge changes Ib8b6973e,I19874768
* changes:
  Check number of core channels and SAC decoder input channels to avoid a channel mismatch.
  Revise bypass mode in SpatialDecApplyParameterSets() to prevent an assert in fDivNorm().
2020-12-28 18:41:27 +00:00
TreeHugger Robot e1f4578a40 Merge changes I6aaeef87,I9681942b,I60ac86f0,I025e943e,I75edf24b
* changes:
  Improve decoder robustness by storing flags and elFlags temporarily.
  ELD downscale factor 3 is only allowed for framesize 480.
  Check transportDec_OutOfBandConfig() input buffer size parameter.
  Evaluate and return StoreConfigAsBitstream() error state.
  Introduce aacDecoder_drcDisable() and always disable legacy DRC for USAC.
2020-12-28 18:34:58 +00:00
TreeHugger Robot d4fb5f5374 Merge "Make sure that alphaValue is correctly initialized in sbrDecoder_drcApplySlot()." 2020-12-28 18:33:39 +00:00
TreeHugger Robot 04d0fa42ff Merge changes I5eb0f88a,I1d853414
* changes:
  Fix unsigned integer overflow in Hcr_State_BODY_SIGN_ESC__ESC_WORD().
  Validate DRC compression factor and DRC boost factor value range in aacDecoder_SetParam().
2020-12-28 18:30:10 +00:00
Fraunhofer IIS FDK 36dd057c40 Introduce additional sanity checks to validate program config element.
Bug: 176246647
Test: atest android.media.cts.DecoderTestAacFormat android.media.cts.DecoderTestXheAac android.media.cts.DecoderTestAacDrc
Change-Id: I3e04480ab5a74da1a9d09af5da95afb2000b3117
2020-12-28 09:21:16 -08:00
Fraunhofer IIS FDK 5eb9ed1b1f Check number of core channels and SAC decoder input channels to avoid a channel mismatch.
Bug: 176246647
Test: atest android.media.cts.DecoderTestAacFormat android.media.cts.DecoderTestXheAac android.media.cts.DecoderTestAacDrc
Change-Id: Ib8b6973e9c29e13b8ef33d7736be2b977928face
2020-12-28 09:21:16 -08:00
Fraunhofer IIS FDK bfd912da32 Improve decoder robustness by storing flags and elFlags temporarily.
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I6aaeef87e1f2ce5d5031f088b8c57e6f5806929d
2020-12-28 09:21:16 -08:00
Fraunhofer IIS FDK 9256cfbb73 Make sure that alphaValue is correctly initialized in sbrDecoder_drcApplySlot().
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I5bded2e3d29278bb5df561eaa2a46d963ee21df8
2020-12-28 09:21:16 -08:00
Fraunhofer IIS FDK 293ccc7fbc Fix unsigned integer overflow in Hcr_State_BODY_SIGN_ESC__ESC_WORD().
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I5eb0f88a55e856c427f9e4647332070f66e673c5
2020-12-28 09:21:16 -08:00
Fraunhofer IIS FDK d6a7375bfa Revise bypass mode in SpatialDecApplyParameterSets() to prevent an assert in fDivNorm().
Bug: 176246647
Test: atest android.media.cts.DecoderTestAacFormat android.media.cts.DecoderTestXheAac android.media.cts.DecoderTestAacDrc
Change-Id: I198747688f1677b82f27a17a2fcf40229c92b1da
2020-12-28 09:21:16 -08:00
Fraunhofer IIS FDK 9f2d1a18d4 ELD downscale factor 3 is only allowed for framesize 480.
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I9681942ba39761e4f1d66236ad80c2420ca5abe9
2020-12-28 09:21:16 -08:00
Fraunhofer IIS FDK b1136d1c34 Check transportDec_OutOfBandConfig() input buffer size parameter.
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I60ac86f09a5652c820d60dfdc12212637f888164
2020-12-28 09:21:16 -08:00
Fraunhofer IIS FDK fcc3c65ec5 Evaluate and return StoreConfigAsBitstream() error state.
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I025e943e91f9be1a5259a761a8ff88defd8babea
2020-12-28 09:21:16 -08:00
Fraunhofer IIS FDK 8f2e68d5c4 Introduce aacDecoder_drcDisable() and always disable legacy DRC for USAC.
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I75edf24b18e1f5392b6eb179d5574cb93fcbc7c2
2020-12-28 09:21:16 -08:00
Jean-Michel Trivi 3708417303 Merge "Prevent integer overflow in subbandTPApply() energy update." 2020-12-28 16:30:05 +00:00
Jean-Michel Trivi f67a5bb99c Merge "Limit smoothedNoise values to avoid integer overflows in adjustTimeSlotHQ() and adjustTimeSlotHQ_GainAndNoise()." 2020-12-28 16:29:55 +00:00
Jean-Michel Trivi 1e2fb8395c Merge "Avoid integer overflow in dct_II()." 2020-12-28 16:21:42 +00:00
Anuj Joshi ec3d6d9f0e Added aac_enc_fuzzer
Test: ./aac_enc_fuzzer
Bug: 172429950

Change-Id: Ia84f85425f6df10b13a3d045472f7f684f27eb8a
2020-12-28 10:33:12 +05:30
TreeHugger Robot 4080278410 Merge "Prevent integer overflows in dualChannelFiltering() and eightChannelFiltering()." 2020-12-27 01:47:15 +00:00
Fraunhofer IIS FDK c8a38ef647 Adjust VBR mode depending on given peak bitrate and fix crash recovery usage.
Operating the FDK encoder in A2DP with variable bitrate mode
configuration resulted in unexpected encoder return value AACENC_ENCODE_ERROR.

Due to peak bitrate restriction the encoder quite often runs into requantization.
In case the bitrate constraint is not fulfilled, the so-called crash recovery is
used as final emergency step. The crash recovery reduces the overall bit
consumption considering the given number of bits to be saved. The bit difference
is extracted from audio element structures. In VBR mode the element wise bit
consumption state was not updated since there is typically no bitrate limitation
required.

The patch solves the choppy audio problems and increases audio quality for
AAC VBR encoding.

The changes in FDKaacEnc_QCMain() ensure that audio element bit info is always
updated. This is achieved by always calling FDKaacEnc_BitResRedistribution()
and FDKaacEnc_prepareBitDistribution() with maxBitsPerFrame variable as total
bits parameter.
Furthermore, VBR assumes a certain target bitrate which is used for internal
configuration and limitations. In case the peak bitrate parameter is less than
the VBR mode target bitrate the maximum of both bitrate configurations was used.

The function FDKaacEnc_AdjustVBRBitrateMode() is added to adjust the encoder
internal VBR mode to a desired target bitrate less than given peak bitrate.
It is possible that the peak bitrate is very close to the desired target bitrate.
The virtual available bitreservoir is quite low and the encoder would run quite
often into requantization with needless audio quality reduction. In such a
configuration, it is a better choice to use the CBR targeted threshold adaption
to avoid audio quality reduction.

In FDKaacEnc_Initialize(), there was already a bitResMode selection depending
on available bitreservoir for CBR. This selection will now also be used for VBR.
In case the bitResMode is AACENC_BR_MODE_FULL and VBR mode is selected, the VBR
threshold adaption is used. Otherwise, CBR threshold adaption strategy is used
and therefore, no unnecessary fill bits are written.

Bug: 161400526
Test: see bug
Change-Id: I1865f817180150da6add2623a64f1a102622784a
2020-12-23 18:57:54 -08:00
Fraunhofer IIS FDK 883c114399 Validate DRC compression factor and DRC boost factor value range in aacDecoder_SetParam().
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I1d8534145bcf400c5da58d64d3b7e73a87cb43be
2020-12-23 15:08:03 -08:00
Fraunhofer IIS FDK aad908c262 Prevent integer overflow in subbandTPApply() energy update.
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I9ed8b33414907706808956cffad252052928c799
2020-12-23 15:04:17 -08:00
Fraunhofer IIS FDK 4305167ceb Limit smoothedNoise values to avoid integer overflows in adjustTimeSlotHQ() and adjustTimeSlotHQ_GainAndNoise().
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: Ib630d56a626ddd59a9155df38cda2011c3165346
2020-12-23 14:50:36 -08:00
Fraunhofer IIS FDK 2b281bb5a3 Avoid integer overflow in dct_II().
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: I6c30c4dec3f85410c2748eb42d38f5eb72521ec5
2020-12-23 14:46:18 -08:00
Fraunhofer IIS FDK 9f9bffb763 Prevent integer overflows in dualChannelFiltering() and eightChannelFiltering().
Bug: 176246647
Test: atest DecoderTestXheAac DecoderTestAacDrc
Change-Id: Ic9217bbb3980807036ae6ae121e6ddb7cc1bce35
2020-12-23 14:45:11 -08:00
Cindy Zhou c93fff6784 Enable cfi for aac
Bug: 158010610
Bug: 173497308
Test: ran atest DecoderConformanceTest, ImageReaderDecoderTest,
VideoDecoderPerfTest, VideoEncoderTest.  Compare the
before and after enabling CFI results since there was a number of tests
that were initially failing.

Change-Id: I0d0d2a76512dc909a67f34adacff9ffbf536dbe7
2020-12-17 07:45:11 -08:00
Xin Li f4f79ae49c Mark ab/6881855 as merged am: b831187d3a am: a5f0e4af6d
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/aac/+/13112547

Change-Id: I9243e7da297d69b2bcb1f2d87a4b7a36c961e063
2020-11-24 00:35:17 +00:00
Xin Li a5f0e4af6d Mark ab/6881855 as merged am: b831187d3a
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/aac/+/13112547

Change-Id: Id04d2590c249cad13da8dd8975d0a12ce96a9597
2020-11-24 00:10:16 +00:00
Xin Li b831187d3a Mark ab/6881855 as merged
Bug: 172690556
Change-Id: I4edc064b9a87da525672e61919ec8fb59a70202e
2020-11-23 11:29:57 -08:00
Bill Yi 95d83d6c0d [automerger skipped] Merge "Merge rvc-release RP1A.201105.002 to aosp-master - DO NOT MERGE" am: f4adff7fbb am: 0834f1a0b8 -s ours am: dd90d1595f -s ours am: de35b0d3cc -s ours
am skip reason: subject contains skip directive

Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1486978

Change-Id: I01e518ed4a6d04fd21c673bd6fbf7c6739d21320
2020-11-05 04:57:08 +00:00
Bill Yi 54e05b6496 [automerger skipped] Merge rvc-release RP1A.201105.002 to aosp-master - DO NOT MERGE am: 5b4265a02a am: 8b4e287ff6 -s ours am: 51ff3aa199 -s ours am: 700bc783fb -s ours
am skip reason: subject contains skip directive

Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1486978

Change-Id: I77b49175f9c8523aa87b1aa4b99a106bdaef25b6
2020-11-05 04:57:01 +00:00
Bill Yi de35b0d3cc [automerger skipped] Merge "Merge rvc-release RP1A.201105.002 to aosp-master - DO NOT MERGE" am: f4adff7fbb am: 0834f1a0b8 -s ours am: dd90d1595f -s ours
am skip reason: Change-Id I44e842648acbceb02bbc28cf2ad729a0caddf60d with SHA-1 1f2e0ecb62 is in history

Original change: https://android-review.googlesource.com/c/platform/external/aac/+/1486978

Change-Id: I9d8f11842a7d222ff9eaf50be2e44f1507c4bb49
2020-11-05 04:21:11 +00:00