⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dr_prefetch_bdrom.h

📁 这是DVD中伺服部分的核心代码
💻 H
字号:
/******************************************************************************
*******************************************************************************
**                                                                           **
**  Copyright (c) 2005 Videon Central, Inc.                                  **
**  All rights reserved.                                                     **
**                                                                           **
**  The computer program contained herein contains proprietary information   **
**  which is the property of Videon Central, Inc.  The program may be used   **
**  and/or copied only with the written permission of Videon Central, Inc.   **
**  or in accordance with the terms and conditions stipulated in the         **
**  agreement/contract under which the programs have been supplied.          **
**                                                                           **
*******************************************************************************
******************************************************************************/
/**
 * @file dr_prefetch_bdrom.h
 *
 * DR Prefetch Class header file.
 *
 * $Id: dr_prefetch_bdrom.h,v 1.7 2007/01/26 20:49:07 rbehe Exp $
 */

#ifndef DR_PREFETCH_BDROM_H
#define DR_PREFETCH_BDROM_H




#include "dr_types.h"
#include "dr_prefetch.h"
#include "clpinfodb.h"


typedef struct tagBDROM_SPEEDCHANGE
{
    BOOLEAN  fReverse;
    BYTE     bDiscrete;
}BDROM_SPEEDCHANGE;




#ifdef __cplusplus
extern "C" {
#endif



/**************************
 *
 * CLASS DRPrefetch_BDROM
 *
 **************************/
class DRPrefetch_BDROM: public DRPrefetch
{
private:
    ClpInfo             m_clpInfo;

    BDROM_SPEEDCHANGE   m_BDspeed;
    LocalContextManager m_lcManager;

    ULONG               m_playList_id;
    ULONG               m_playItem_id;
    ULONG               m_title_num;

    DR_ERROR dataRetrieve(PLAYCMD playcmd);
    DR_ERROR drGetKey(ULONG playList_id, ULONG playItem_id, ULONG cps_unit, ULONGLONG boFirst);

    LONG     GetAndSend(LOADER_FILE_HANDLE hFileHandle, ULONGLONG boFirst, ULONGLONG boLast, BOOLEAN fDataDiscontinuity, BOOLEAN fTrickPlay, PVOID pvContext);
    DR_ERROR drSendSubtextInfo(UBYTE numFiles, UBYTE *font_names, ULONG tIn, PVOID pvContext);
#ifdef DRM_BDPLUS_SUPPORT
    DR_ERROR drGetAndSendFixup(ClpInfo* clpInfo, ULONGLONG boCurrentPosition, ULONG ulbytesRead);
#endif
    uint32   GetPlayRate(void);
    PVOID    GetContext(void);
    PVOID    GetNextContext(void);

public:
    DRPrefetch_BDROM()
    {
        m_BDspeed.fReverse              = FALSE;
        m_BDspeed.bDiscrete             = 0;
    }

    ~DRPrefetch_BDROM()
    {
        Stop(TRUE);

        m_lcManager.Delete();
    }

    void * operator new( size_t size )
    {
        return ( OS_MemAlloc(size) );
    }

    void operator delete( void * pvPFB )
    {
        OS_MemFree(pvPFB);
    }

    DR_ERROR Configure (LOADER_HANDLE prm_loader, cStream* prm_stream, DR_EVENT prm_event, PVOID prm_pContext)
    {
        DR_ERROR status;

        m_lcManager.Allocate( (BYTE)(prm_stream->MaxStatus() + 2) );

        status = DRPrefetch::Configure(prm_loader, prm_stream, prm_event, prm_pContext);

        return(status);
    }

    DR_ERROR StopAtChangePoint(BOOLEAN fAngle, ULONG *ulAngleChangePointPTS, PVOID *pvContext);
};


#ifdef __cplusplus
}
#endif


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -