std::vector<int8_t, tbb::cache_aligned_allocator<int8_t>> buffer2_;\r
std::vector<int16_t, tbb::cache_aligned_allocator<int16_t>> audio_samples_; \r
std::queue<std::shared_ptr<AVPacket>> packets_;\r
+\r
+ int64_t nb_frames_;\r
public:\r
explicit implementation(const std::shared_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) \r
: format_desc_(format_desc) \r
+ , nb_frames_(0)\r
{ \r
AVCodec* dec;\r
index_ = av_find_best_stream(context.get(), AVMEDIA_TYPE_AUDIO, -1, -1, &dec, 0);\r
\r
codec_context_.reset(context->streams[index_]->codec, avcodec_close);\r
\r
+ //nb_frames_ = context->streams[index_]->nb_frames;\r
+ //if(nb_frames_ == 0)\r
+ // nb_frames_ = context->streams[index_]->duration * context->streams[index_]->time_base.den;\r
+\r
if(codec_context_ &&\r
(codec_context_->sample_rate != static_cast<int>(format_desc_.audio_sample_rate) || \r
codec_context_->channels != static_cast<int>(format_desc_.audio_channels)) ||\r
void audio_decoder::push(const std::shared_ptr<AVPacket>& packet){impl_->push(packet);}\r
bool audio_decoder::ready() const{return impl_->ready();}\r
std::vector<std::shared_ptr<std::vector<int16_t>>> audio_decoder::poll(){return impl_->poll();}\r
+int64_t audio_decoder::nb_frames() const{return impl_->nb_frames_;}\r
}
\ No newline at end of file