JPG output now retries several seek points if the first is not available for some reason
This commit is contained in:
parent
8b73260194
commit
5150a2ec32
1 changed files with 21 additions and 4 deletions
|
@ -77,9 +77,21 @@ namespace Mist{
|
|||
}
|
||||
|
||||
uint64_t seekPos = M.getFirstms(mainTrack) + (M.getLastms(mainTrack) - M.getFirstms(mainTrack)) / 2;
|
||||
bool didSeek = false;
|
||||
size_t retries = 10;
|
||||
while (!didSeek && --retries){
|
||||
MEDIUM_MSG("VoD seek to %" PRIu64 "ms", seekPos);
|
||||
uint32_t targetKey = M.getKeyIndexForTime(mainTrack, seekPos);
|
||||
seek(M.getTimeForKeyIndex(mainTrack, targetKey));
|
||||
didSeek = seek(M.getTimeForKeyIndex(mainTrack, targetKey));
|
||||
if (!didSeek){
|
||||
selectDefaultTracks();
|
||||
mainTrack = getMainSelectedTrack();
|
||||
}
|
||||
seekPos = M.getFirstms(mainTrack) + (M.getLastms(mainTrack) - M.getFirstms(mainTrack)) * (((double)retries)/10.0);
|
||||
}
|
||||
if (!didSeek){
|
||||
onFail("Could not seek to location for image");
|
||||
}
|
||||
}
|
||||
|
||||
void OutJPG::init(Util::Config *cfg){
|
||||
|
@ -209,6 +221,11 @@ namespace Mist{
|
|||
}
|
||||
|
||||
initialSeek();
|
||||
size_t mainTrack = getMainSelectedTrack();
|
||||
if (mainTrack == INVALID_TRACK_ID){
|
||||
FAIL_MSG("Could not select valid track");
|
||||
return;
|
||||
}
|
||||
|
||||
int fin = -1, fout = -1, ferr = 2;
|
||||
pid_t ffmpeg = -1;
|
||||
|
@ -253,7 +270,7 @@ namespace Mist{
|
|||
|
||||
// Send H264 init data in Annex B format
|
||||
MP4::AVCC avccbox;
|
||||
avccbox.setPayload(M.getInit(getMainSelectedTrack()));
|
||||
avccbox.setPayload(M.getInit(mainTrack));
|
||||
ffconn.SendNow(avccbox.asAnnexB());
|
||||
INSANE_MSG("Sent init data to ffmpeg...");
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue