MP4解复用支持多track

This commit is contained in:
xia-chu 2023-12-09 16:52:49 +08:00
parent e3a01a580a
commit db86e4a76c
1 changed files with 5 additions and 2 deletions

View File

@ -61,6 +61,7 @@ void MP4Demuxer::onVideoTrack(uint32_t track, uint8_t object, int width, int hei
if (!video) { if (!video) {
return; return;
} }
video->setIndex(track);
_track_to_codec.emplace(track, video); _track_to_codec.emplace(track, video);
if (extra && bytes) { if (extra && bytes) {
video->setExtraData((uint8_t *)extra, bytes); video->setExtraData((uint8_t *)extra, bytes);
@ -72,6 +73,7 @@ void MP4Demuxer::onAudioTrack(uint32_t track, uint8_t object, int channel_count,
if (!audio) { if (!audio) {
return; return;
} }
audio->setIndex(track);
_track_to_codec.emplace(track, audio); _track_to_codec.emplace(track, audio);
if (extra && bytes) { if (extra && bytes) {
audio->setExtraData((uint8_t *)extra, bytes); audio->setExtraData((uint8_t *)extra, bytes);
@ -166,15 +168,16 @@ Frame::Ptr MP4Demuxer::makeFrame(uint32_t track_id, const Buffer::Ptr &buf, int6
} }
} }
if (ret) { if (ret) {
ret->setIndex(track_id);
it->second->inputFrame(ret); it->second->inputFrame(ret);
} }
return ret; return ret;
} }
vector<Track::Ptr> MP4Demuxer::getTracks(bool trackReady) const { vector<Track::Ptr> MP4Demuxer::getTracks(bool ready) const {
vector<Track::Ptr> ret; vector<Track::Ptr> ret;
for (auto &pr : _track_to_codec) { for (auto &pr : _track_to_codec) {
if (trackReady && !pr.second->ready()) { if (ready && !pr.second->ready()) {
continue; continue;
} }
ret.push_back(pr.second); ret.push_back(pr.second);