Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0590a180 authored by Jennifer's avatar Jennifer
Browse files

Floss: added an error check in a2dp_aac_encoder_init

In this patch, we added an error check of |pcm_samples_per_frame| returned by
|prepare_context| in |a2dp_aac_encoder_init|.
If |pcm_samples_per_frame| is negative, an error is encountered and
|a2dp_aac_encoder_init| would return immediately.

Bug: 294165759
Tag: #floss
Test: m - None
Change-Id: If28fdaf9d78a1fb38b1f44d7fc6175f1f67627bf
parent 85915d19
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -314,9 +314,16 @@ void a2dp_aac_encoder_init(const tA2DP_ENCODER_INIT_PEER_PARAMS* p_peer_params,
  tA2DP_BITS_PER_SAMPLE bits_per_sample =
      a2dp_codec_config->getAudioBitsPerSample();

  uint32_t pcm_samples_per_frame =
  int pcm_samples_per_frame =
      codec_intf.prepare_context(sample_rate, channel_count, bit_rate);

  if (pcm_samples_per_frame < 0) {
    LOG_ERROR("%s: Failed to prepare context: %d", __func__,
              pcm_samples_per_frame);
    codec_intf.clear_context();
    return;  // TODO(b/294165759): need to return an error
  }

  uint32_t encoder_interval_ms = pcm_samples_per_frame * 1000 / sample_rate;

  a2dp_aac_encoder_cb = tA2DP_AAC_ENCODER_CB{
@@ -337,7 +344,7 @@ void a2dp_aac_encoder_init(const tA2DP_ENCODER_INIT_PEER_PARAMS* p_peer_params,
                                 channel_count * encoder_interval_ms) /
                                1000,
          },
      .pcm_samples_per_frame = pcm_samples_per_frame,
      .pcm_samples_per_frame = static_cast<uint32_t>(pcm_samples_per_frame),
      .encoder_interval_ms = encoder_interval_ms,
      .stats =
          a2dp_aac_encoder_stats_t{