Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / modules / rtp_rtcp / source / rtp_receiver_video.cc
index 058d91e..6f6d647 100644 (file)
@@ -65,20 +65,31 @@ int32_t RTPReceiverVideo::ParseRtpPacket(WebRtcRTPHeader* rtp_header,
   const uint16_t payload_data_length =
       payload_length - rtp_header->header.paddingLength;
 
-  if (payload_data_length == 0)
+  if (payload == NULL || payload_data_length == 0) {
     return data_callback_->OnReceivedPayloadData(NULL, 0, rtp_header) == 0 ? 0
                                                                            : -1;
+  }
 
   // We are not allowed to hold a critical section when calling below functions.
   scoped_ptr<RtpDepacketizer> depacketizer(
-      RtpDepacketizer::Create(rtp_header->type.Video.codec, data_callback_));
+      RtpDepacketizer::Create(rtp_header->type.Video.codec));
   if (depacketizer.get() == NULL) {
     LOG(LS_ERROR) << "Failed to create depacketizer.";
     return -1;
   }
 
   rtp_header->type.Video.isFirstPacket = is_first_packet;
-  return depacketizer->Parse(rtp_header, payload, payload_data_length) ? 0 : -1;
+  RtpDepacketizer::ParsedPayload parsed_payload;
+  if (!depacketizer->Parse(&parsed_payload, payload, payload_data_length))
+    return -1;
+
+  rtp_header->frameType = parsed_payload.frame_type;
+  rtp_header->type = parsed_payload.type;
+  return data_callback_->OnReceivedPayloadData(parsed_payload.payload,
+                                               parsed_payload.payload_length,
+                                               rtp_header) == 0
+             ? 0
+             : -1;
 }
 
 int RTPReceiverVideo::GetPayloadTypeFrequency() const {