Bug 1354993 - Add PictureID into VP8 CodecSpecificInfo. r?jolin
MozReview-Commit-ID: 7l2WygPuHRX
--- a/media/webrtc/signaling/src/media-conduit/WebrtcMediaCodecVP8VideoCodec.cpp
+++ b/media/webrtc/signaling/src/media-conduit/WebrtcMediaCodecVP8VideoCodec.cpp
@@ -39,19 +39,20 @@ static const char MEDIACODEC_VIDEO_MIME_
namespace mozilla {
static const char* logTag ="WebrtcMediaCodecVP8VideoCodec";
class CallbacksSupport final : public JavaCallbacksSupport
{
public:
- CallbacksSupport(webrtc::EncodedImageCallback* aCallback) :
- mCallback(aCallback),
- mCritSect(webrtc::CriticalSectionWrapper::CreateCriticalSection()) {
+ CallbacksSupport(webrtc::EncodedImageCallback* aCallback)
+ : mCallback(aCallback)
+ , mCritSect(webrtc::CriticalSectionWrapper::CreateCriticalSection())
+ , mPictureId(0) {
CSFLogDebug(logTag, "%s %p", __FUNCTION__, this);
memset(&mEncodedImage, 0, sizeof(mEncodedImage));
}
~CallbacksSupport() {
CSFLogDebug(logTag, "%s %p", __FUNCTION__, this);
if (mEncodedImage._size) {
delete [] mEncodedImage._buffer;
@@ -119,17 +120,18 @@ public:
mEncodedImage._length = size;
jni::ByteBuffer::LocalRef dest =
jni::ByteBuffer::New(mEncodedImage._buffer, size);
aSample->WriteToByteBuffer(dest);
webrtc::CodecSpecificInfo info;
info.codecType = webrtc::kVideoCodecVP8;
- info.codecSpecific.VP8.pictureId = -1;
+ info.codecSpecific.VP8.pictureId = mPictureId;
+ mPictureId = (mPictureId + 1) & 0x7FFF;
info.codecSpecific.VP8.tl0PicIdx = -1;
info.codecSpecific.VP8.keyIdx = -1;
info.codecSpecific.VP8.temporalIdx = 1;
info.codecSpecific.VP8.simulcastIdx = 0;
webrtc::RTPFragmentationHeader header;
memset(&header, 0, sizeof(header));
header.VerifyAndAllocateFragmentationHeader(1);
@@ -147,16 +149,17 @@ public:
friend class WebrtcMediaCodecVP8VideoRemoteEncoder;
private:
webrtc::EncodedImageCallback* mCallback;
Atomic<bool> mCanceled;
webrtc::EncodedImage mEncodedImage;
rtc::scoped_ptr<webrtc::CriticalSectionWrapper> mCritSect;
+ uint32_t mPictureId;
};
static MediaCodec::LocalRef CreateDecoder(const char* aMimeType)
{
if (!aMimeType) {
return nullptr;
}