std::queue<std::shared_ptr<AVPacket>> packets_;\r
\r
int64_t nb_frames_;\r
- double duration_;\r
public:\r
explicit implementation(const safe_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) \r
: format_desc_(format_desc) \r
, nb_frames_(0)\r
- , duration_(std::numeric_limits<double>::max())\r
{ \r
try\r
{\r
\r
buffer1_.resize(AVCODEC_MAX_AUDIO_FRAME_SIZE*2);\r
\r
- //nb_frames_ = context->streams[index_]->nb_frames;\r
- //if(nb_frames_ == 0)\r
- // nb_frames_ = context->streams[index_]->duration / (codec_context_->channels*codec_context_->sample_rate);\r
- duration_ = context->streams[index_]->duration / static_cast<double>(codec_context_->sample_rate);\r
-\r
if(codec_context_->sample_rate != static_cast<int>(format_desc_.audio_sample_rate) || \r
codec_context_->channels != static_cast<int>(format_desc_.audio_channels) ||\r
codec_context_->sample_fmt != AV_SAMPLE_FMT_S16)\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
-double audio_decoder::duration() const {return impl_->duration_;}\r
}
\ No newline at end of file