On Sat, 26 Nov 2011 17:07:07 -0500, Justin Ruggles <[email protected]> wrote: > --- > avplay.c | 41 +++++++++++++++++++++++++---------------- > 1 files changed, 25 insertions(+), 16 deletions(-) > > diff --git a/avplay.c b/avplay.c > index 1005cba..c90b7f8 100644 > --- a/avplay.c > +++ b/avplay.c > @@ -153,12 +153,9 @@ typedef struct VideoState { > AVStream *audio_st; > PacketQueue audioq; > int audio_hw_buf_size; > - /* samples output by the codec. we reserve more space for avsync > - compensation */ > - DECLARE_ALIGNED(16,uint8_t,audio_buf1)[(AVCODEC_MAX_AUDIO_FRAME_SIZE * > 3) / 2]; > - DECLARE_ALIGNED(16,uint8_t,audio_buf2)[(AVCODEC_MAX_AUDIO_FRAME_SIZE * > 3) / 2]; > uint8_t silence_buf[SDL_AUDIO_BUFFER_SIZE]; > uint8_t *audio_buf; > + uint8_t *audio_buf1; > unsigned int audio_buf_size; /* in bytes */ > int audio_buf_index; /* in bytes */ > AVPacket audio_pkt_temp; > @@ -2010,21 +2007,21 @@ static int audio_decode_frame(VideoState *is, double > *pts_ptr) > AVPacket *pkt_temp = &is->audio_pkt_temp; > AVPacket *pkt = &is->audio_pkt; > AVCodecContext *dec= is->audio_st->codec; > - int n, len1, data_size; > + int n, len1, data_size, got_frame; > double pts; > int new_packet = 0; > int flush_complete = 0; > + AVFrame *decoded_frame = NULL; > > for(;;) { > /* NOTE: the audio packet can contain several frames */ > while (pkt_temp->size > 0 || (!pkt_temp->data && new_packet)) { > + if (!(decoded_frame = avcodec_alloc_frame())) > + return AVERROR(ENOMEM);
Wouldn't it be better to allocate the frame only once and then just reset it with avcodec_get_frame_defaults()? -- Anton Khirnov _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
