From b0a6868d05229a93b196012cd5adbc61a5b63d49 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Fri, 15 May 2020 14:20:13 +0300 Subject: [PATCH] Fix mkv convertor --- applications/ftl2mkv/src/main.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/applications/ftl2mkv/src/main.cpp b/applications/ftl2mkv/src/main.cpp index 6c52bd2a1..d86f32428 100644 --- a/applications/ftl2mkv/src/main.cpp +++ b/applications/ftl2mkv/src/main.cpp @@ -133,7 +133,7 @@ int main(int argc, char **argv) { LOG(INFO) << "Converting..."; - int current_stream = root->value("stream", 0); + int current_stream = root->value("stream", 255); int current_channel = root->value("channel", -1); //bool stream_added[10] = {false}; @@ -142,16 +142,16 @@ int main(int argc, char **argv) { // Read entire file to find all streams before reading again to write data bool res = r.read(90000000000000, [¤t_stream,¤t_channel,&r,&video_st,oc](const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) { if (spkt.channel != static_cast<ftl::codecs::Channel>(current_channel) && current_channel != -1) return; - if (spkt.streamID == current_stream || current_stream == 255) { + if (spkt.frame_number == current_stream || current_stream == 255) { if (pkt.codec != codec_t::HEVC) { return; } - if (spkt.streamID >= 10) return; // TODO: Allow for more than 10 + if (spkt.frame_number >= 10) return; // TODO: Allow for more than 10 - if (video_st[spkt.streamID][(spkt.channel == Channel::Left) ? 0 : 1] == nullptr) { - video_st[spkt.streamID][(spkt.channel == Channel::Left) ? 0 : 1] = add_video_stream(oc, pkt); + if (video_st[spkt.frame_number][(spkt.channel == Channel::Left) ? 0 : 1] == nullptr) { + video_st[spkt.frame_number][(spkt.channel == Channel::Left) ? 0 : 1] = add_video_stream(oc, pkt); } } }); @@ -173,7 +173,7 @@ int main(int argc, char **argv) { res = r.read(90000000000000, [¤t_stream,¤t_channel,&r,&video_st,oc,&seen_key](const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) { if (spkt.channel != static_cast<ftl::codecs::Channel>(current_channel) && current_channel != -1) return; - if (spkt.streamID == current_stream || current_stream == 255) { + if (spkt.frame_number == current_stream || current_stream == 255) { if (pkt.codec != codec_t::HEVC) { return; @@ -181,23 +181,23 @@ int main(int argc, char **argv) { //LOG(INFO) << "Reading packet: (" << (int)spkt.streamID << "," << (int)spkt.channel << ") " << (int)pkt.codec << ", " << (int)pkt.definition; - if (spkt.streamID >= 10) return; // TODO: Allow for more than 10 + if (spkt.frame_number >= 10) return; // TODO: Allow for more than 10 bool keyframe = false; if (pkt.codec == codec_t::HEVC) { if (ftl::codecs::hevc::isIFrame(pkt.data.data(), pkt.data.size())) { - seen_key[spkt.streamID] = true; + seen_key[spkt.frame_number] = true; keyframe = true; } } - if (!seen_key[spkt.streamID]) return; + if (!seen_key[spkt.frame_number]) return; AVPacket avpkt; av_init_packet(&avpkt); if (keyframe) avpkt.flags |= AV_PKT_FLAG_KEY; avpkt.pts = spkt.timestamp - r.getStartTime(); avpkt.dts = avpkt.pts; - avpkt.stream_index= video_st[spkt.streamID][(spkt.channel == Channel::Left) ? 0 : 1]->index; + avpkt.stream_index= video_st[spkt.frame_number][(spkt.channel == Channel::Left) ? 0 : 1]->index; avpkt.data= const_cast<uint8_t*>(pkt.data.data()); avpkt.size= pkt.data.size(); avpkt.duration = 1; -- GitLab