Feature: remove packet_alloc(), it will be initialed when av_read_frame

pull/221/head
xufuji456 2 years ago
parent f86aa36990
commit bfbd6df00b
  1. 12
      app/src/main/cpp/audio_player.cpp

@ -204,6 +204,7 @@ end:
AUDIO_PLAYER_FUNC(void, play, jstring input_jstr, jstring filter_jstr) {
int got_frame = 0, ret = 0;
AVPacket packet;
AVFilterGraph *audioFilterGraph;
AVFilterContext *audioSrcContext;
AVFilterContext *audioSinkContext;
@ -238,7 +239,6 @@ AUDIO_PLAYER_FUNC(void, play, jstring input_jstr, jstring filter_jstr) {
LOGE(TAG, "Couldn't open audio decoder");
return;
}
auto *packet = (AVPacket *) av_malloc(sizeof(AVPacket));
AVFrame *frame = av_frame_alloc();
SwrContext *swrCtx = swr_alloc();
enum AVSampleFormat in_sample_fmt = codecCtx->sample_fmt;
@ -286,9 +286,9 @@ AUDIO_PLAYER_FUNC(void, play, jstring input_jstr, jstring filter_jstr) {
mVisualizer->init_visualizer();
//read audio frame
while (av_read_frame(pFormatCtx, packet) >= 0 && !filter_release) {
if (packet->stream_index != audio_stream_idx) {
av_packet_unref(packet);
while (av_read_frame(pFormatCtx, &packet) >= 0 && !filter_release) {
if (packet.stream_index != audio_stream_idx) {
av_packet_unref(&packet);
continue;
}
if (filter_again) {
@ -300,7 +300,7 @@ AUDIO_PLAYER_FUNC(void, play, jstring input_jstr, jstring filter_jstr) {
}
LOGE(TAG, "play again,filter_descr=_=%s", filter_desc);
}
ret = avcodec_decode_audio4(codecCtx, frame, &got_frame, packet);
ret = avcodec_decode_audio4(codecCtx, frame, &got_frame, &packet);
if (ret < 0) {
break;
}
@ -343,7 +343,7 @@ AUDIO_PLAYER_FUNC(void, play, jstring input_jstr, jstring filter_jstr) {
usleep(SLEEP_TIME);
}
}
av_packet_unref(packet);
av_packet_unref(&packet);
}
end:
av_free(out_buffer);

Loading…
Cancel
Save