Skip to content

Commit

Permalink
Exit early if creation of ringbuffer failed....
Browse files Browse the repository at this point in the history
MythPlayer::OpenFile can take 20s before it exits as it keeps retrying for that time... Check that the creation of the ringbuffer succeeded, and if not exit early.
  • Loading branch information
jyavenard committed Jul 12, 2013
1 parent 3deabbd commit c446495
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
7 changes: 4 additions & 3 deletions mythtv/libs/libmythtv/avformatwriter.cpp
Expand Up @@ -171,11 +171,12 @@ bool AVFormatWriter::OpenFile(void)

m_ringBuffer = RingBuffer::Create(m_filename, true);

if (!m_ringBuffer)
if (!m_ringBuffer || !m_ringBuffer->GetLastError().isEmpty())
{
Cleanup();
LOG(VB_RECORD, LOG_ERR, LOC +
"OpenFile(): RingBuffer::Create() failed");
QString("OpenFile(): RingBuffer::Create() failed: '%1'")
.arg(m_ringBuffer ? m_ringBuffer->GetLastError() : ""));
Cleanup();
return false;
}

Expand Down
15 changes: 13 additions & 2 deletions mythtv/programs/mythtranscode/transcode.cpp
Expand Up @@ -253,9 +253,20 @@ int Transcode::TranscodeFile(const QString &inputname,
// Input setup
PlayerContext *player_ctx = new PlayerContext(kTranscoderInUseID);
player_ctx->SetPlayingInfo(m_proginfo);
player_ctx->SetRingBuffer((hls && (hlsStreamID != -1)) ?
RingBuffer *rb = (hls && (hlsStreamID != -1)) ?
RingBuffer::Create(hls->GetSourceFile(), false, false) :
RingBuffer::Create(inputname, false, false));
RingBuffer::Create(inputname, false, false);
if (!rb || !rb->GetLastError().isEmpty())
{
LOG(VB_GENERAL, LOG_ERR,
QString("Transcoding aborted, error: '%1'")
.arg(rb? rb->GetLastError() : ""));
delete player_ctx;
if (hls)
delete hls;
return REENCODE_ERROR;
}
player_ctx->SetRingBuffer(rb);
player_ctx->SetPlayer(new MythPlayer(kVideoIsNull));
SetPlayerContext(player_ctx);
GetPlayer()->SetPlayerInfo(NULL, NULL, GetPlayerContext());
Expand Down

0 comments on commit c446495

Please sign in to comment.