@@ -110,8 +110,8 @@ void SingleStreamDecoder::initializeDecoder() {
110110 " , does not match AVStream's index, " +
111111 std::to_string (avStream->index ) + " ." );
112112 streamMetadata.streamIndex = i;
113- streamMetadata.mediaType = avStream->codecpar ->codec_type ;
114113 streamMetadata.codecName = avcodec_get_name (avStream->codecpar ->codec_id );
114+ streamMetadata.mediaType = avStream->codecpar ->codec_type ;
115115 streamMetadata.bitRate = avStream->codecpar ->bit_rate ;
116116
117117 int64_t frameCount = avStream->nb_frames ;
@@ -133,10 +133,18 @@ void SingleStreamDecoder::initializeDecoder() {
133133 if (fps > 0 ) {
134134 streamMetadata.averageFpsFromHeader = fps;
135135 }
136+ streamMetadata.width = avStream->codecpar ->width ;
137+ streamMetadata.height = avStream->codecpar ->height ;
138+ streamMetadata.sampleAspectRatio =
139+ avStream->codecpar ->sample_aspect_ratio ;
136140 containerMetadata_.numVideoStreams ++;
137141 } else if (avStream->codecpar ->codec_type == AVMEDIA_TYPE_AUDIO) {
138142 AVSampleFormat format =
139143 static_cast <AVSampleFormat>(avStream->codecpar ->format );
144+ streamMetadata.sampleRate =
145+ static_cast <int64_t >(avStream->codecpar ->sample_rate );
146+ streamMetadata.numChannels =
147+ static_cast <int64_t >(getNumChannels (avStream->codecpar ));
140148
141149 // If the AVSampleFormat is not recognized, we get back nullptr. We have
142150 // to make sure we don't initialize a std::string with nullptr. There's
@@ -516,6 +524,10 @@ void SingleStreamDecoder::addVideoStream(
516524 auto & streamInfo = streamInfos_[activeStreamIndex_];
517525 streamInfo.videoStreamOptions = videoStreamOptions;
518526
527+ // This metadata was already set in initializeDecoder() from the
528+ // AVCodecParameters that are part of the AVStream. But we consider the
529+ // AVCodecContext to be more authoritative, so we use that for our decoding
530+ // stream.
519531 streamMetadata.width = streamInfo.codecContext ->width ;
520532 streamMetadata.height = streamInfo.codecContext ->height ;
521533 streamMetadata.sampleAspectRatio =
@@ -568,6 +580,11 @@ void SingleStreamDecoder::addAudioStream(
568580
569581 auto & streamMetadata =
570582 containerMetadata_.allStreamMetadata [activeStreamIndex_];
583+
584+ // This metadata was already set in initializeDecoder() from the
585+ // AVCodecParameters that are part of the AVStream. But we consider the
586+ // AVCodecContext to be more authoritative, so we use that for our decoding
587+ // stream.
571588 streamMetadata.sampleRate =
572589 static_cast <int64_t >(streamInfo.codecContext ->sample_rate );
573590 streamMetadata.numChannels =
0 commit comments