Stop using RTPFragmentationHeader in sdk/android as unneeded
Bug: webrtc:6471 Change-Id: I81bbea4b7fd6e0325791456bb521e9dd0a64487d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/180806 Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31836}
This commit is contained in:

committed by
Commit Bot

parent
a4f23ad0ce
commit
0d000c0530
@ -254,13 +254,12 @@ void VideoEncoderWrapper::OnEncodedFrame(
|
|||||||
frame_copy.SetTimestamp(frame_extra_info.timestamp_rtp);
|
frame_copy.SetTimestamp(frame_extra_info.timestamp_rtp);
|
||||||
frame_copy.capture_time_ms_ = capture_time_ns / rtc::kNumNanosecsPerMillisec;
|
frame_copy.capture_time_ms_ = capture_time_ns / rtc::kNumNanosecsPerMillisec;
|
||||||
|
|
||||||
RTPFragmentationHeader header = ParseFragmentationHeader(frame);
|
|
||||||
if (frame_copy.qp_ < 0)
|
if (frame_copy.qp_ < 0)
|
||||||
frame_copy.qp_ = ParseQp(frame);
|
frame_copy.qp_ = ParseQp(frame);
|
||||||
|
|
||||||
CodecSpecificInfo info(ParseCodecSpecificInfo(frame));
|
CodecSpecificInfo info(ParseCodecSpecificInfo(frame));
|
||||||
|
|
||||||
callback_->OnEncodedImage(frame_copy, &info, &header);
|
callback_->OnEncodedImage(frame_copy, &info);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t VideoEncoderWrapper::HandleReturnCode(JNIEnv* jni,
|
int32_t VideoEncoderWrapper::HandleReturnCode(JNIEnv* jni,
|
||||||
@ -289,35 +288,6 @@ int32_t VideoEncoderWrapper::HandleReturnCode(JNIEnv* jni,
|
|||||||
return WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
return WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
||||||
}
|
}
|
||||||
|
|
||||||
RTPFragmentationHeader VideoEncoderWrapper::ParseFragmentationHeader(
|
|
||||||
rtc::ArrayView<const uint8_t> buffer) {
|
|
||||||
RTPFragmentationHeader header;
|
|
||||||
if (codec_settings_.codecType == kVideoCodecH264) {
|
|
||||||
h264_bitstream_parser_.ParseBitstream(buffer.data(), buffer.size());
|
|
||||||
|
|
||||||
// For H.264 search for start codes.
|
|
||||||
const std::vector<H264::NaluIndex> nalu_idxs =
|
|
||||||
H264::FindNaluIndices(buffer.data(), buffer.size());
|
|
||||||
if (nalu_idxs.empty()) {
|
|
||||||
RTC_LOG(LS_ERROR) << "Start code is not found!";
|
|
||||||
RTC_LOG(LS_ERROR) << "Data:" << buffer[0] << " " << buffer[1] << " "
|
|
||||||
<< buffer[2] << " " << buffer[3] << " " << buffer[4]
|
|
||||||
<< " " << buffer[5];
|
|
||||||
}
|
|
||||||
header.VerifyAndAllocateFragmentationHeader(nalu_idxs.size());
|
|
||||||
for (size_t i = 0; i < nalu_idxs.size(); i++) {
|
|
||||||
header.fragmentationOffset[i] = nalu_idxs[i].payload_start_offset;
|
|
||||||
header.fragmentationLength[i] = nalu_idxs[i].payload_size;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Generate a header describing a single fragment.
|
|
||||||
header.VerifyAndAllocateFragmentationHeader(1);
|
|
||||||
header.fragmentationOffset[0] = 0;
|
|
||||||
header.fragmentationLength[0] = buffer.size();
|
|
||||||
}
|
|
||||||
return header;
|
|
||||||
}
|
|
||||||
|
|
||||||
int VideoEncoderWrapper::ParseQp(rtc::ArrayView<const uint8_t> buffer) {
|
int VideoEncoderWrapper::ParseQp(rtc::ArrayView<const uint8_t> buffer) {
|
||||||
int qp;
|
int qp;
|
||||||
bool success;
|
bool success;
|
||||||
@ -329,6 +299,7 @@ int VideoEncoderWrapper::ParseQp(rtc::ArrayView<const uint8_t> buffer) {
|
|||||||
success = vp9::GetQp(buffer.data(), buffer.size(), &qp);
|
success = vp9::GetQp(buffer.data(), buffer.size(), &qp);
|
||||||
break;
|
break;
|
||||||
case kVideoCodecH264:
|
case kVideoCodecH264:
|
||||||
|
h264_bitstream_parser_.ParseBitstream(buffer.data(), buffer.size());
|
||||||
success = h264_bitstream_parser_.GetLastSliceQp(&qp);
|
success = h264_bitstream_parser_.GetLastSliceQp(&qp);
|
||||||
break;
|
break;
|
||||||
default: // Default is to not provide QP.
|
default: // Default is to not provide QP.
|
||||||
|
@ -67,8 +67,6 @@ class VideoEncoderWrapper : public VideoEncoder {
|
|||||||
const JavaRef<jobject>& j_value,
|
const JavaRef<jobject>& j_value,
|
||||||
const char* method_name);
|
const char* method_name);
|
||||||
|
|
||||||
RTPFragmentationHeader ParseFragmentationHeader(
|
|
||||||
rtc::ArrayView<const uint8_t> buffer);
|
|
||||||
int ParseQp(rtc::ArrayView<const uint8_t> buffer);
|
int ParseQp(rtc::ArrayView<const uint8_t> buffer);
|
||||||
CodecSpecificInfo ParseCodecSpecificInfo(const EncodedImage& frame);
|
CodecSpecificInfo ParseCodecSpecificInfo(const EncodedImage& frame);
|
||||||
ScopedJavaLocalRef<jobject> ToJavaBitrateAllocation(
|
ScopedJavaLocalRef<jobject> ToJavaBitrateAllocation(
|
||||||
|
Reference in New Issue
Block a user