From 009b7d2a7e16c0485d655f28a8a3594f2838a02f Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Tue, 2 Feb 2010 15:26:59 +0100 Subject: remove old buffer and a/v sync parts --- dxr3output-audio.c | 138 ----------------------------------------------------- 1 file changed, 138 deletions(-) delete mode 100644 dxr3output-audio.c (limited to 'dxr3output-audio.c') diff --git a/dxr3output-audio.c b/dxr3output-audio.c deleted file mode 100644 index 25f40c1..0000000 --- a/dxr3output-audio.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * dxr3output-audio.c - * - * Copyright (C) 2002-2004 Kai Möller - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#include -#include -#include "dxr3output.h" -#include "dxr3audio.h" -#include "dxr3pesframe.h" - -// ================================== -const int AUDIO_OFFSET = 4500; -#define SCR m_dxr3Device->GetSysClock() -// ================================== - -// ================================== -//! constr. -cDxr3AudioOutThread::cDxr3AudioOutThread(cDxr3SyncBuffer& buffer) : - cDxr3OutputThread(buffer) -{ - SetDescription("DXR3 audio output"); -} - -// ================================== -//! thread action -void cDxr3AudioOutThread::Action() -{ - bool resync = false; - uint32_t pts = 0; - - while (Running()) - { - pts = 0; - cFixedLengthFrame* pNext = m_buffer.Get(); - - if (pNext) pts = pNext->pts(); - - if ((pts && abs((int)pts-(int)SCR) > 30000)) - { - m_buffer.Clear(); - m_bNeedResync = true; - } - else if (pNext) - { - if (!pts || pts < SCR) - { - if (!pts && resync) - { - continue; - } - else - { - resync = false; - } - - if (pts && (pts < SCR) && ((SCR - pts) > 5000)) - { - m_dxr3Device->SetSysClock(pts + 1 * AUDIO_OFFSET); - PlayFrame(pNext); - if (m_buffer.IsPolled()) - { - m_buffer.Clear(); - m_bNeedResync = true; - } - } - else - { - PlayFrame(pNext); - m_buffer.Pop(); - } - } - else - { - if (abs((int)pts - (int)SCR) < (AUDIO_OFFSET )) - { - PlayFrame(pNext); - m_buffer.Pop(); - } - } - } - - if ((pts > SCR && abs((int)pts - (int)SCR) > AUDIO_OFFSET)) - { - cCondWait::SleepMs(10); - } - } -} - -void cDxr3AudioOutThread::PlayFrame(cFixedLengthFrame *frame) -{ - // only call setup and manipulate the volume for analog audio - if (!audioOutput->isDigitalAudio()) { - - // update audio context - SampleContext ctx; - ctx.samplerate = frame->samplerate(); - ctx.channels = frame->channels(); - - // TODO find cause why we need this workaround - if (ctx.samplerate != -1 && ctx.channels != -1) { - audioOutput->setup(ctx); - } else { - dsyslog("[fixme] samplerate: %d channels: %d", ctx.samplerate, ctx.channels); - } - - // volume changes - audioOutput->changeVolume((short *)frame->GetData(), (size_t)frame->length()); - } - - audioOutput->write(frame->GetData(), frame->length()); -} - -#undef SCR - -// Local variables: -// mode: c++ -// c-file-style: "stroustrup" -// c-file-offsets: ((inline-open . 0)) -// tab-width: 4; -// indent-tabs-mode: nil -// End: -- cgit v1.2.3