Bug 1317609 - support avc extra data. r=kinetik draft
authorAlfredo.Yang <ayang@mozilla.com>
Thu, 24 Nov 2016 16:36:08 +0800
changeset 443673 80ce1ed379ff764e4a72fba3d2efdaf682f71f7e
parent 443672 cbee895e95f2c0f2ad3c06b03b65ab3c3ad6d34d
child 538113 6c627383173fced44756ed5230ba425d4669960c
push id37062
push userbmo:ayang@mozilla.com
push dateFri, 25 Nov 2016 01:24:01 +0000
reviewerskinetik
bugs1317609
milestone53.0a1
Bug 1317609 - support avc extra data. r=kinetik MozReview-Commit-ID: Kza7utcIpFP
media/libstagefright/binding/DecoderData.cpp
media/libstagefright/binding/MP4Metadata.cpp
--- a/media/libstagefright/binding/DecoderData.cpp
+++ b/media/libstagefright/binding/DecoderData.cpp
@@ -199,16 +199,19 @@ MP4VideoInfo::Update(const mp4parse_trac
   }
   mTrackId = track->track_id;
   mDuration = track->duration;
   mMediaTime = track->media_time;
   mDisplay.width = video->display_width;
   mDisplay.height = video->display_height;
   mImage.width = video->image_width;
   mImage.height = video->image_height;
+  if (video->extra_data.data) {
+    mExtraData->AppendElements(video->extra_data.data, video->extra_data.length);
+  }
 }
 #endif
 
 bool
 MP4VideoInfo::IsValid() const
 {
   return (mDisplay.width > 0 && mDisplay.height > 0) ||
     (mImage.width > 0 && mImage.height > 0);
--- a/media/libstagefright/binding/MP4Metadata.cpp
+++ b/media/libstagefright/binding/MP4Metadata.cpp
@@ -304,16 +304,20 @@ MP4Metadata::GetTrackInfo(mozilla::Track
       //MOZ_DIAGNOSTIC_ASSERT(audioRust->mProfile != audio->mProfile);
       //MOZ_DIAGNOSTIC_ASSERT(audioRust->mExtendedProfile != audio->mExtendedProfile);
       break;
     }
     case mozilla::TrackInfo::kVideoTrack: {
       VideoInfo *videoRust = infoRust->GetAsVideoInfo(), *video = info->GetAsVideoInfo();
       MOZ_DIAGNOSTIC_ASSERT(videoRust->mDisplay == video->mDisplay);
       MOZ_DIAGNOSTIC_ASSERT(videoRust->mImage == video->mImage);
+      MOZ_DIAGNOSTIC_ASSERT(*videoRust->mExtraData == *video->mExtraData);
+      // mCodecSpecificConfig is for video/mp4-es, not video/avc. Since video/mp4-es
+      // is supported on b2g only, it could be removed from TrackInfo.
+      MOZ_DIAGNOSTIC_ASSERT(*videoRust->mCodecSpecificConfig == *video->mCodecSpecificConfig);
       break;
     }
     default:
       break;
     }
   }
 #endif