diff --git a/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.cc b/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.cc index 83be3a7dd3..33f9c4fcfb 100644 --- a/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.cc +++ b/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.cc @@ -139,8 +139,10 @@ EncodedImage MultiplexEncodedImagePacker::PackAndRelease( frame_header.component_index = images[i].component_index; frame_header.bitstream_offset = bitstream_offset; + const size_t padding = + EncodedImage::GetBufferPaddingBytes(images[i].codec_type); frame_header.bitstream_length = - static_cast(images[i].encoded_image._length); + static_cast(images[i].encoded_image._length + padding); bitstream_offset += frame_header.bitstream_length; frame_header.codec_type = images[i].codec_type; @@ -213,8 +215,11 @@ MultiplexImage MultiplexEncodedImagePacker::Unpack( EncodedImage encoded_image = combined_image; encoded_image._timeStamp = combined_image._timeStamp; encoded_image._frameType = frame_headers[i].frame_type; - encoded_image._length = encoded_image._size = + encoded_image._size = static_cast(frame_headers[i].bitstream_length); + const size_t padding = + EncodedImage::GetBufferPaddingBytes(image_component.codec_type); + encoded_image._length = encoded_image._size - padding; encoded_image._buffer = combined_image._buffer + frame_headers[i].bitstream_offset; diff --git a/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc b/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc index 2754b39844..0d797ecedd 100644 --- a/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc +++ b/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc @@ -234,8 +234,9 @@ EncodedImageCallback::Result MultiplexEncoderAdapter::OnEncodedImage( if (stashed_image.image_components.size() == frame_count) { // Complete case - auto iter = stashed_images_.begin(); - while (iter != stashed_images_.end() && iter != stashed_image_next_itr) { + for (auto iter = stashed_images_.begin(); + iter != stashed_images_.end() && iter != stashed_image_next_itr; + iter++) { // No image at all, skip. if (iter->second.image_components.size() == 0) continue; @@ -252,7 +253,6 @@ EncodedImageCallback::Result MultiplexEncoderAdapter::OnEncodedImage( codec_info.codecSpecific.generic.simulcast_idx = 0; encoded_complete_callback_->OnEncodedImage(combined_image_, &codec_info, fragmentation); - iter++; } stashed_images_.erase(stashed_images_.begin(), stashed_image_next_itr);