Use StreamParser::TrackId instead of string for MediaTrack::byteStreamTrackId

Review-Url: https://codereview.chromium.org/1861963008
Cr-Commit-Position: refs/heads/master@{#399263}
diff --git a/media/base/media_track.cc b/media/base/media_track.cc
index ad5178f..59791e1 100644
--- a/media/base/media_track.cc
+++ b/media/base/media_track.cc
@@ -7,11 +7,15 @@
 namespace media {
 
 MediaTrack::MediaTrack(Type type,
-                       const std::string& id,
+                       StreamParser::TrackId bytestream_track_id,
                        const std::string& kind,
                        const std::string& label,
                        const std::string& lang)
-    : type_(type), id_(id), kind_(kind), label_(label), language_(lang) {}
+    : type_(type),
+      bytestream_track_id_(bytestream_track_id),
+      kind_(kind),
+      label_(label),
+      language_(lang) {}
 
 MediaTrack::~MediaTrack() {}
 
diff --git a/media/base/media_track.h b/media/base/media_track.h
index a5cb6d3..3cd41d7 100644
--- a/media/base/media_track.h
+++ b/media/base/media_track.h
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "media/base/media_export.h"
+#include "media/base/stream_parser.h"
 
 namespace media {
 
@@ -15,7 +16,7 @@
  public:
   enum Type { Text, Audio, Video };
   MediaTrack(Type type,
-             const std::string& id,
+             StreamParser::TrackId bytestream_track_id,
              const std::string& kind,
              const std::string& label,
              const std::string& lang);
@@ -23,14 +24,16 @@
 
   Type type() const { return type_; }
 
-  const std::string& id() const { return id_; }
+  StreamParser::TrackId bytestream_track_id() const {
+    return bytestream_track_id_;
+  }
   const std::string& kind() const { return kind_; }
   const std::string& label() const { return label_; }
   const std::string& language() const { return language_; }
 
  private:
   Type type_;
-  std::string id_;
+  StreamParser::TrackId bytestream_track_id_;
   std::string kind_;
   std::string label_;
   std::string language_;
diff --git a/media/base/media_tracks.cc b/media/base/media_tracks.cc
index 367bd01..6f3d2c5 100644
--- a/media/base/media_tracks.cc
+++ b/media/base/media_tracks.cc
@@ -16,34 +16,34 @@
 MediaTracks::~MediaTracks() {}
 
 void MediaTracks::AddAudioTrack(const AudioDecoderConfig& config,
-                                const std::string& id,
+                                StreamParser::TrackId bytestream_track_id,
                                 const std::string& kind,
                                 const std::string& label,
                                 const std::string& language) {
   DCHECK(config.IsValidConfig());
-  CHECK(audio_configs_.find(id) == audio_configs_.end());
-  std::unique_ptr<MediaTrack> track = base::WrapUnique(
-      new MediaTrack(MediaTrack::Audio, id, kind, label, language));
+  CHECK(audio_configs_.find(bytestream_track_id) == audio_configs_.end());
+  std::unique_ptr<MediaTrack> track = base::WrapUnique(new MediaTrack(
+      MediaTrack::Audio, bytestream_track_id, kind, label, language));
   tracks_.push_back(std::move(track));
-  audio_configs_[id] = config;
+  audio_configs_[bytestream_track_id] = config;
 }
 
 void MediaTracks::AddVideoTrack(const VideoDecoderConfig& config,
-                                const std::string& id,
+                                StreamParser::TrackId bytestream_track_id,
                                 const std::string& kind,
                                 const std::string& label,
                                 const std::string& language) {
   DCHECK(config.IsValidConfig());
-  CHECK(video_configs_.find(id) == video_configs_.end());
-  std::unique_ptr<MediaTrack> track = base::WrapUnique(
-      new MediaTrack(MediaTrack::Video, id, kind, label, language));
+  CHECK(video_configs_.find(bytestream_track_id) == video_configs_.end());
+  std::unique_ptr<MediaTrack> track = base::WrapUnique(new MediaTrack(
+      MediaTrack::Video, bytestream_track_id, kind, label, language));
   tracks_.push_back(std::move(track));
-  video_configs_[id] = config;
+  video_configs_[bytestream_track_id] = config;
 }
 
 const AudioDecoderConfig& MediaTracks::getAudioConfig(
-    const std::string& id) const {
-  auto it = audio_configs_.find(id);
+    StreamParser::TrackId bytestream_track_id) const {
+  auto it = audio_configs_.find(bytestream_track_id);
   if (it != audio_configs_.end())
     return it->second;
   static AudioDecoderConfig invalidConfig;
@@ -51,8 +51,8 @@
 }
 
 const VideoDecoderConfig& MediaTracks::getVideoConfig(
-    const std::string& id) const {
-  auto it = video_configs_.find(id);
+    StreamParser::TrackId bytestream_track_id) const {
+  auto it = video_configs_.find(bytestream_track_id);
   if (it != video_configs_.end())
     return it->second;
   static VideoDecoderConfig invalidConfig;
@@ -62,7 +62,7 @@
 const AudioDecoderConfig& MediaTracks::getFirstAudioConfig() const {
   for (const auto& track : tracks()) {
     if (track->type() == MediaTrack::Audio) {
-      return getAudioConfig(track->id());
+      return getAudioConfig(track->bytestream_track_id());
     }
   }
   static AudioDecoderConfig invalidConfig;
@@ -72,7 +72,7 @@
 const VideoDecoderConfig& MediaTracks::getFirstVideoConfig() const {
   for (const auto& track : tracks()) {
     if (track->type() == MediaTrack::Video) {
-      return getVideoConfig(track->id());
+      return getVideoConfig(track->bytestream_track_id());
     }
   }
   static VideoDecoderConfig invalidConfig;
diff --git a/media/base/media_tracks.h b/media/base/media_tracks.h
index ea4a38c1..0681398 100644
--- a/media/base/media_tracks.h
+++ b/media/base/media_tracks.h
@@ -26,23 +26,27 @@
   MediaTracks();
   ~MediaTracks();
 
-  // Callers need to ensure that track id is unique.
+  // Adds a new audio track. The |bytestreamTrackId| must uniquely identify the
+  // track within the bytestream.
   void AddAudioTrack(const AudioDecoderConfig& config,
-                     const std::string& id,
+                     StreamParser::TrackId bytestream_track_id,
                      const std::string& kind,
                      const std::string& label,
                      const std::string& language);
-  // Callers need to ensure that track id is unique.
+  // Adds a new video track. The |bytestreamTrackId| must uniquely identify the
+  // track within the bytestream.
   void AddVideoTrack(const VideoDecoderConfig& config,
-                     const std::string& id,
+                     StreamParser::TrackId bytestream_track_id,
                      const std::string& kind,
                      const std::string& label,
                      const std::string& language);
 
   const MediaTracksCollection& tracks() const { return tracks_; }
 
-  const AudioDecoderConfig& getAudioConfig(const std::string& id) const;
-  const VideoDecoderConfig& getVideoConfig(const std::string& id) const;
+  const AudioDecoderConfig& getAudioConfig(
+      StreamParser::TrackId bytestream_track_id) const;
+  const VideoDecoderConfig& getVideoConfig(
+      StreamParser::TrackId bytestream_track_id) const;
 
   // TODO(servolk): These are temporary helpers useful until all code paths are
   // converted to properly handle multiple media tracks.
@@ -51,8 +55,8 @@
 
  private:
   MediaTracksCollection tracks_;
-  std::map<std::string, AudioDecoderConfig> audio_configs_;
-  std::map<std::string, VideoDecoderConfig> video_configs_;
+  std::map<StreamParser::TrackId, AudioDecoderConfig> audio_configs_;
+  std::map<StreamParser::TrackId, VideoDecoderConfig> video_configs_;
 
   DISALLOW_COPY_AND_ASSIGN(MediaTracks);
 };
diff --git a/media/base/stream_parser.h b/media/base/stream_parser.h
index f640c5c9..8c4bc24 100644
--- a/media/base/stream_parser.h
+++ b/media/base/stream_parser.h
@@ -21,10 +21,10 @@
 #include "media/base/demuxer_stream.h"
 #include "media/base/eme_constants.h"
 #include "media/base/media_export.h"
-#include "media/base/media_log.h"
 
 namespace media {
 
+class MediaLog;
 class MediaTracks;
 class StreamParserBuffer;
 class TextTrackConfig;
diff --git a/media/base/stream_parser_buffer.cc b/media/base/stream_parser_buffer.cc
index 2be4dbe..8c1693bc 100644
--- a/media/base/stream_parser_buffer.cc
+++ b/media/base/stream_parser_buffer.cc
@@ -4,6 +4,8 @@
 
 #include "media/base/stream_parser_buffer.h"
 
+#include <algorithm>
+
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
 #include "media/base/timestamp_constants.h"
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index 9d153cde..bf46cb2 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -20,6 +20,7 @@
 #include "base/location.h"
 #include "base/metrics/histogram.h"
 #include "base/single_thread_task_runner.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/task_runner_util.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/trace_event.h"
@@ -844,7 +845,8 @@
   for (const auto& track : tracks->tracks()) {
     if (track->type() == MediaTrack::Audio) {
       auto track_id = client_->addAudioTrack(
-          blink::WebString::fromUTF8(track->id()),
+          blink::WebString::fromUTF8(
+              base::UintToString(track->bytestream_track_id())),
           blink::WebMediaPlayerClient::AudioTrackKindMain,
           blink::WebString::fromUTF8(track->label()),
           blink::WebString::fromUTF8(track->language()),
@@ -852,7 +854,8 @@
       (void)track_id;
     } else if (track->type() == MediaTrack::Video) {
       auto track_id = client_->addVideoTrack(
-          blink::WebString::fromUTF8(track->id()),
+          blink::WebString::fromUTF8(
+              base::UintToString(track->bytestream_track_id())),
           blink::WebMediaPlayerClient::VideoTrackKindMain,
           blink::WebString::fromUTF8(track->label()),
           blink::WebString::fromUTF8(track->language()),
diff --git a/media/blink/websourcebuffer_impl.cc b/media/blink/websourcebuffer_impl.cc
index 5482406..f210ea53 100644
--- a/media/blink/websourcebuffer_impl.cc
+++ b/media/blink/websourcebuffer_impl.cc
@@ -12,6 +12,7 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/callback_helpers.h"
+#include "base/strings/string_number_conversions.h"
 #include "media/base/media_tracks.h"
 #include "media/base/timestamp_constants.h"
 #include "media/filters/chunk_demuxer.h"
@@ -182,7 +183,8 @@
   for (const auto& track : tracks->tracks()) {
     blink::WebSourceBufferClient::MediaTrackInfo trackInfo;
     trackInfo.trackType = mediaTrackTypeToBlink(track->type());
-    trackInfo.byteStreamTrackId = blink::WebString::fromUTF8(track->id());
+    trackInfo.byteStreamTrackId = blink::WebString::fromUTF8(
+        base::UintToString(track->bytestream_track_id()));
     trackInfo.kind = blink::WebString::fromUTF8(track->kind());
     trackInfo.label = blink::WebString::fromUTF8(track->label());
     trackInfo.language = blink::WebString::fromUTF8(track->language());
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index 4307fae..be8b1d9 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -1207,7 +1207,7 @@
       continue;
     }
 
-    std::string track_id = base::IntToString(stream->id);
+    StreamParser::TrackId track_id = stream->id;
     std::string track_label = streams_[i]->GetMetadata("handler_name");
     std::string track_language = streams_[i]->GetMetadata("language");
 
@@ -1216,7 +1216,8 @@
         strstr(format_context->iformat->name, "matroska")) {
       // TODO(servolk): FFmpeg doesn't set stream->id correctly for webm files.
       // Need to fix that and use it as track id. crbug.com/323183
-      track_id = base::UintToString(media_tracks->tracks().size() + 1);
+      track_id =
+          static_cast<StreamParser::TrackId>(media_tracks->tracks().size() + 1);
       track_label = streams_[i]->GetMetadata("title");
     }
 
diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc
index 81da95e..59977f4 100644
--- a/media/filters/ffmpeg_demuxer_unittest.cc
+++ b/media/filters/ffmpeg_demuxer_unittest.cc
@@ -1205,14 +1205,14 @@
 
   const MediaTrack& audio_track = *(media_tracks_->tracks()[0]);
   EXPECT_EQ(audio_track.type(), MediaTrack::Audio);
-  EXPECT_EQ(audio_track.id(), "1");
+  EXPECT_EQ(audio_track.bytestream_track_id(), 1);
   EXPECT_EQ(audio_track.kind(), "main");
   EXPECT_EQ(audio_track.label(), "GPAC ISO Audio Handler");
   EXPECT_EQ(audio_track.language(), "und");
 
   const MediaTrack& video_track = *(media_tracks_->tracks()[1]);
   EXPECT_EQ(video_track.type(), MediaTrack::Video);
-  EXPECT_EQ(video_track.id(), "2");
+  EXPECT_EQ(video_track.bytestream_track_id(), 2);
   EXPECT_EQ(video_track.kind(), "main");
   EXPECT_EQ(video_track.label(), "GPAC ISO Video Handler");
   EXPECT_EQ(video_track.language(), "und");
@@ -1228,14 +1228,14 @@
 
   const MediaTrack& video_track = *(media_tracks_->tracks()[0]);
   EXPECT_EQ(video_track.type(), MediaTrack::Video);
-  EXPECT_EQ(video_track.id(), "1");
+  EXPECT_EQ(video_track.bytestream_track_id(), 1);
   EXPECT_EQ(video_track.kind(), "main");
   EXPECT_EQ(video_track.label(), "");
   EXPECT_EQ(video_track.language(), "");
 
   const MediaTrack& audio_track = *(media_tracks_->tracks()[1]);
   EXPECT_EQ(audio_track.type(), MediaTrack::Audio);
-  EXPECT_EQ(audio_track.id(), "2");
+  EXPECT_EQ(audio_track.bytestream_track_id(), 2);
   EXPECT_EQ(audio_track.kind(), "main");
   EXPECT_EQ(audio_track.label(), "");
   EXPECT_EQ(audio_track.language(), "");
diff --git a/media/filters/media_source_state.cc b/media/filters/media_source_state.cc
index 5ca9df01..6a1d95f 100644
--- a/media/filters/media_source_state.cc
+++ b/media/filters/media_source_state.cc
@@ -480,6 +480,7 @@
     const StreamParser::TextTrackConfigMap& text_configs) {
   DCHECK_GE(state_, PENDING_PARSER_CONFIG);
   DCHECK(tracks.get());
+
   media_tracks_ = std::move(tracks);
   const AudioDecoderConfig& audio_config = media_tracks_->getFirstAudioConfig();
   const VideoDecoderConfig& video_config = media_tracks_->getFirstVideoConfig();
diff --git a/media/filters/media_source_state.h b/media/filters/media_source_state.h
index 3eb5e54..1a25e65 100644
--- a/media/filters/media_source_state.h
+++ b/media/filters/media_source_state.h
@@ -11,6 +11,7 @@
 #include "base/macros.h"
 #include "media/base/demuxer_stream.h"
 #include "media/base/media_export.h"
+#include "media/base/media_log.h"
 #include "media/base/stream_parser.h"
 #include "media/base/stream_parser_buffer.h"
 
diff --git a/media/formats/common/stream_parser_test_base.cc b/media/formats/common/stream_parser_test_base.cc
index a4dce128..c70d6e2 100644
--- a/media/formats/common/stream_parser_test_base.cc
+++ b/media/formats/common/stream_parser_test_base.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "media/base/media_log.h"
 #include "media/base/media_track.h"
 #include "media/base/media_tracks.h"
 #include "media/base/test_data_util.h"
diff --git a/media/formats/mp2t/mp2t_stream_parser.cc b/media/formats/mp2t/mp2t_stream_parser.cc
index 041bc0d..9f43d2d 100644
--- a/media/formats/mp2t/mp2t_stream_parser.cc
+++ b/media/formats/mp2t/mp2t_stream_parser.cc
@@ -512,10 +512,10 @@
   // TODO(servolk): Implement proper sourcing of media track info as described
   // in crbug.com/590085
   if (audio_config.IsValidConfig()) {
-    media_tracks->AddAudioTrack(audio_config, "audio", "main", "", "");
+    media_tracks->AddAudioTrack(audio_config, 1, "main", "", "");
   }
   if (video_config.IsValidConfig()) {
-    media_tracks->AddVideoTrack(video_config, "video", "main", "", "");
+    media_tracks->AddVideoTrack(video_config, 2, "main", "", "");
   }
   return media_tracks;
 }
diff --git a/media/formats/mp2t/mp2t_stream_parser_unittest.cc b/media/formats/mp2t/mp2t_stream_parser_unittest.cc
index 8a03f57..9395a24 100644
--- a/media/formats/mp2t/mp2t_stream_parser_unittest.cc
+++ b/media/formats/mp2t/mp2t_stream_parser_unittest.cc
@@ -18,6 +18,7 @@
 #include "base/time/time.h"
 #include "media/base/audio_decoder_config.h"
 #include "media/base/decoder_buffer.h"
+#include "media/base/media_log.h"
 #include "media/base/media_track.h"
 #include "media/base/media_tracks.h"
 #include "media/base/stream_parser_buffer.h"
diff --git a/media/formats/mp4/mp4_stream_parser.cc b/media/formats/mp4/mp4_stream_parser.cc
index dbd736d..1926d1fe 100644
--- a/media/formats/mp4/mp4_stream_parser.cc
+++ b/media/formats/mp4/mp4_stream_parser.cc
@@ -320,9 +320,9 @@
           base::TimeDelta(), 0);
       has_audio_ = true;
       audio_track_id_ = track->header.track_id;
-      media_tracks->AddAudioTrack(
-          audio_config, base::UintToString(audio_track_id_), "main",
-          track->media.handler.name, track->media.header.language());
+      media_tracks->AddAudioTrack(audio_config, audio_track_id_, "main",
+                                  track->media.handler.name,
+                                  track->media.header.language());
       continue;
     }
 
@@ -371,9 +371,9 @@
           is_video_track_encrypted_ ? AesCtrEncryptionScheme() : Unencrypted());
       has_video_ = true;
       video_track_id_ = track->header.track_id;
-      media_tracks->AddVideoTrack(
-          video_config, base::UintToString(video_track_id_), "main",
-          track->media.handler.name, track->media.header.language());
+      media_tracks->AddVideoTrack(video_config, video_track_id_, "main",
+                                  track->media.handler.name,
+                                  track->media.header.language());
       continue;
     }
 
diff --git a/media/formats/mp4/mp4_stream_parser_unittest.cc b/media/formats/mp4/mp4_stream_parser_unittest.cc
index e84a85b7..7109c20 100644
--- a/media/formats/mp4/mp4_stream_parser_unittest.cc
+++ b/media/formats/mp4/mp4_stream_parser_unittest.cc
@@ -499,14 +499,14 @@
   EXPECT_EQ(media_tracks_->tracks().size(), 2u);
   const MediaTrack& video_track = *(media_tracks_->tracks()[0]);
   EXPECT_EQ(video_track.type(), MediaTrack::Video);
-  EXPECT_EQ(video_track.id(), "1");
+  EXPECT_EQ(video_track.bytestream_track_id(), 1);
   EXPECT_EQ(video_track.kind(), "main");
   EXPECT_EQ(video_track.label(), "VideoHandler");
   EXPECT_EQ(video_track.language(), "und");
 
   const MediaTrack& audio_track = *(media_tracks_->tracks()[1]);
   EXPECT_EQ(audio_track.type(), MediaTrack::Audio);
-  EXPECT_EQ(audio_track.id(), "2");
+  EXPECT_EQ(audio_track.bytestream_track_id(), 2);
   EXPECT_EQ(audio_track.kind(), "main");
   EXPECT_EQ(audio_track.label(), "SoundHandler");
   EXPECT_EQ(audio_track.language(), "und");
diff --git a/media/formats/mpeg/adts_stream_parser.cc b/media/formats/mpeg/adts_stream_parser.cc
index 38c01cc..c654304 100644
--- a/media/formats/mpeg/adts_stream_parser.cc
+++ b/media/formats/mpeg/adts_stream_parser.cc
@@ -6,6 +6,7 @@
 
 #include <stddef.h>
 
+#include "media/base/media_log.h"
 #include "media/formats/mpeg/adts_constants.h"
 
 namespace media {
diff --git a/media/formats/mpeg/mpeg1_audio_stream_parser.cc b/media/formats/mpeg/mpeg1_audio_stream_parser.cc
index 410c70d..c0a6e2a 100644
--- a/media/formats/mpeg/mpeg1_audio_stream_parser.cc
+++ b/media/formats/mpeg/mpeg1_audio_stream_parser.cc
@@ -4,6 +4,8 @@
 
 #include "media/formats/mpeg/mpeg1_audio_stream_parser.h"
 
+#include "media/base/media_log.h"
+
 namespace media {
 
 static const uint32_t kMPEG1StartCodeMask = 0xffe00000;
diff --git a/media/formats/mpeg/mpeg_audio_stream_parser_base.cc b/media/formats/mpeg/mpeg_audio_stream_parser_base.cc
index 6e0a383..9952327 100644
--- a/media/formats/mpeg/mpeg_audio_stream_parser_base.cc
+++ b/media/formats/mpeg/mpeg_audio_stream_parser_base.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/message_loop/message_loop.h"
+#include "media/base/media_log.h"
 #include "media/base/media_tracks.h"
 #include "media/base/media_util.h"
 #include "media/base/stream_parser_buffer.h"
@@ -221,7 +222,7 @@
 
     std::unique_ptr<MediaTracks> media_tracks(new MediaTracks());
     if (config_.IsValidConfig()) {
-      media_tracks->AddAudioTrack(config_, "audio", "", "", "");
+      media_tracks->AddAudioTrack(config_, 1, "main", "", "");
     }
     if (!config_cb_.Run(std::move(media_tracks), TextTrackConfigMap()))
       return -1;
diff --git a/media/formats/webm/webm_stream_parser_unittest.cc b/media/formats/webm/webm_stream_parser_unittest.cc
index 4afe163c..0203b138 100644
--- a/media/formats/webm/webm_stream_parser_unittest.cc
+++ b/media/formats/webm/webm_stream_parser_unittest.cc
@@ -107,14 +107,14 @@
 
   const MediaTrack& video_track = *(media_tracks_->tracks()[0]);
   EXPECT_EQ(video_track.type(), MediaTrack::Video);
-  EXPECT_EQ(video_track.id(), "1");
+  EXPECT_EQ(video_track.bytestream_track_id(), 1);
   EXPECT_EQ(video_track.kind(), "main");
   EXPECT_EQ(video_track.label(), "");
   EXPECT_EQ(video_track.language(), "und");
 
   const MediaTrack& audio_track = *(media_tracks_->tracks()[1]);
   EXPECT_EQ(audio_track.type(), MediaTrack::Audio);
-  EXPECT_EQ(audio_track.id(), "2");
+  EXPECT_EQ(audio_track.bytestream_track_id(), 2);
   EXPECT_EQ(audio_track.kind(), "main");
   EXPECT_EQ(audio_track.label(), "");
   EXPECT_EQ(audio_track.language(), "und");
diff --git a/media/formats/webm/webm_tracks_parser.cc b/media/formats/webm/webm_tracks_parser.cc
index f518c72..bcd33e4 100644
--- a/media/formats/webm/webm_tracks_parser.cc
+++ b/media/formats/webm/webm_tracks_parser.cc
@@ -221,9 +221,10 @@
                 encryption_scheme, &audio_decoder_config_)) {
           return false;
         }
-        media_tracks_->AddAudioTrack(audio_decoder_config_,
-                                     base::Uint64ToString(track_num_), "main",
-                                     track_name_, track_language_);
+        media_tracks_->AddAudioTrack(
+            audio_decoder_config_,
+            static_cast<StreamParser::TrackId>(track_num_), "main", track_name_,
+            track_language_);
       } else {
         MEDIA_LOG(DEBUG, media_log_) << "Ignoring audio track " << track_num_;
         ignored_tracks_.insert(track_num_);
@@ -247,9 +248,10 @@
                                             &video_decoder_config_)) {
           return false;
         }
-        media_tracks_->AddVideoTrack(video_decoder_config_,
-                                     base::Uint64ToString(track_num_), "main",
-                                     track_name_, track_language_);
+        media_tracks_->AddVideoTrack(
+            video_decoder_config_,
+            static_cast<StreamParser::TrackId>(track_num_), "main", track_name_,
+            track_language_);
       } else {
         MEDIA_LOG(DEBUG, media_log_) << "Ignoring video track " << track_num_;
         ignored_tracks_.insert(track_num_);