virtual void AddPacket(shared_ptr<const vector<BYTE>> data, DWORD timestamp, DWORD pts, PacketType type) override { packets.emplace_back(make_shared<const packet_t>(type, timestamp, pts, data)); if (start_recording) { start_recording = false; CreateRecordingHelper(App->fileStream, packets); } if ((*data)[0] != 0x17) return; HandleSaveTimes(pts); keyframes.emplace_back(timestamp, --end(packets)); while (keyframes.size() > 2) { if (((long long)timestamp - keyframes[0].first) < (seconds * 1000) || ((long long)timestamp - keyframes[1].first) < (seconds * 1000)) break; packets.erase(begin(packets), keyframes[1].second); keyframes.erase(begin(keyframes)); } }
virtual void AddPacket(BYTE *data, UINT size, DWORD timestamp, DWORD pts, PacketType type) override { packets.emplace_back(make_shared<packet_t>(type, timestamp, pts, vector<BYTE>(data, data + size))); if (data[0] != 0x17) return; HandleSaveTimes(pts); keyframes.emplace_back(timestamp, --end(packets)); while (keyframes.size() > 2) { if (((long long)timestamp - keyframes[0].first) < (seconds * 1000) || ((long long)timestamp - keyframes[1].first) < (seconds * 1000)) break; packets.erase(begin(packets), keyframes[1].second); keyframes.erase(begin(keyframes)); } }