Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: [PATCH] DXR3 Plugin v.0.2.0 External Player Mode



On Wed, 11 Jun 2003 chef@andre-neumann.de wrote:

> i installed the latest DXR3 Plugin yesterday, im using it as a primary
> device without a DVB card.
>
> I noticed a but in the DXR3 Plugin when calling the MPlayer Plugin and
> then stopping the MPlayer Plugin. VDR then crashes.

Same thing here. Most annoying. ;) The "patch" below stops the crash, but
causes static on digital output after returning from mplayer. VDR is
configured to use digital output and the mplayer I ran also used the
digital output.

	-jake


> Im not a programmer, but i was able to fix this. Here is what i have done:
>
> In dxr3abstractiondevice.c line 650 and 652:
>
> Before my patch:
>
> void cDxr3AbsDevice::ExternalReopenDevices(void) {
>     Lock();
>
>     if (bExternalReleased) {
>         m_fdControl = open(dxr3DeviceName( "" ).c_str(), O_WRONLY |
> O_SYNC); assert(m_fdAudio >= 0);
>         m_fdVideo = open(dxr3DeviceName( "_mv" ).c_str(), O_WRONLY |
> O_SYNC); assert(m_fdVideo >= 0);
>         m_fdAudio = open(dxr3DeviceName( "_ma" ).c_str(), O_WRONLY |
> O_SYNC); assert(m_fdAudio >= 0);
>         m_fdSpu = open(dxr3DeviceName( "_sp" ).c_str(), O_WRONLY |
> O_SYNC); assert(m_fdSpu >= 0);
>
>         if (m_fdControl < 0 || m_fdVideo < 0 || m_fdAudio < 0 || m_fdSpu
> <0) {
>             ExternalReleaseDevices();
>         } else {
>             m_pClock = new cDxr3SysClock(m_fdControl, m_fdVideo, m_fdSpu);
>             SetChannelCount(1);
>             bExternalReleased = false;
>         }
>         ReconfigureDevice();
>         m_extSpuInterface.Clear();
>     }
>
>     Unlock();
> }
>
> AFTER my patch:
>
> void cDxr3AbsDevice::ExternalReopenDevices(void) {
>     Lock();
>
>     if (bExternalReleased) {
>         m_fdControl = open(dxr3DeviceName( "" ).c_str(), O_WRONLY |
> O_SYNC); // FIX assert(m_fdAudio >= 0);
>         m_fdVideo = open(dxr3DeviceName( "_mv" ).c_str(), O_WRONLY |
> O_SYNC); assert(m_fdVideo >= 0);
>         m_fdAudio = open(dxr3DeviceName( "_ma" ).c_str(), O_WRONLY |
> O_SYNC); // FIX assert(m_fdAudio >= 0);
>         m_fdSpu = open(dxr3DeviceName( "_sp" ).c_str(), O_WRONLY |
> O_SYNC); assert(m_fdSpu >= 0);
>
>         if (m_fdControl < 0 || m_fdVideo < 0 || m_fdAudio < 0 || m_fdSpu
> <0) {
>             ExternalReleaseDevices();
>         } else {
>             m_pClock = new cDxr3SysClock(m_fdControl, m_fdVideo, m_fdSpu);
>             SetChannelCount(1);
>             bExternalReleased = false;
>         }
>         ReconfigureDevice();
>         m_extSpuInterface.Clear();
>     }
>
>     Unlock();
> }
>
> Maybe this helps anyone, who has the same problem. Maybe Kai can look into
> this and find out the reason, why this happens.
>
> Greetings,
> -------------
> Andre Neumann
>
>
>
>
>

-- 
Jarkko Santala <jake@iki.fi>            http://www.iki.fi/~jake/
System Administrator                    2001:670:83:f08::/64


-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe vdr" as subject.



Home | Main Index | Thread Index