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

📄 skl_btm_cvrt.h

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 H
字号:
/********************************************************
 * Some code. Copyright (C) 2003 by Pascal Massimino.   *
 * All Rights Reserved.      (http://skal.planet-d.net) *
 * For Educational/Academic use ONLY. See 'LICENSE.TXT'.*
 ********************************************************/
/*
 * skl_btm_cvrt.h
 *
 * convertion between bitmaps format and colorspaces
 ********************************************************/

#ifndef _SKL_BTM_CVRT_H_
#define _SKL_BTM_CVRT_H_

#include "skl_2d/skl_btm.h"

//////////////////////////////////////////////////////////
// converters
//////////////////////////////////////////////////////////

extern "C"
SKL_CVRT_FUNC Skl_Get_Cvrt_Convert_Ops(int In_Quantum, int Out_Quantum);
extern "C"
SKL_CVRT_FUNC Skl_Get_Cvrt_Copy_Ops(int Quant);

//////////////////////////////////////////////////////////
// SKL_CONVERTER_MAP
//////////////////////////////////////////////////////////

class SKL_CONVERTER_MAP
{
  private:
    SKL_FORMAT _In, _Out;
    SKL_UINT32 _Map[4][256];  // 4k

    SKL_CVRT_FUNC _Func;

      // yes. private. Use Get_Or_Make_Map() (+Dispose()) instead
    SKL_CONVERTER_MAP(SKL_FORMAT In, SKL_FORMAT Out);

    void Init_Colormapper();
    void Init_Converter();
    void Init_Copier();

    static void Make_Convert_Table(SKL_FORMAT In, SKL_FORMAT Out,
                                   SKL_UINT32 *M1, SKL_UINT32 *M2,
                                   SKL_UINT32 *M3, SKL_UINT32 *M4);

  public:
    static SKL_CONVERTER_MAP *Get_Or_Make_Map(SKL_FORMAT In, SKL_FORMAT Out);
    ~SKL_CONVERTER_MAP() {}

    void Dispose();

    SKL_UINT32 *Get_Map()             { return _Map[0]; }
    SKL_CVRT_FUNC Get_Func()    const { return _Func; }
    SKL_FORMAT Get_In_Format()  const { return _In; }
    SKL_FORMAT Get_Out_Format() const { return _Out; }

    void Convert_And_Store_CMap(SKL_BTM &Dst, const SKL_CMAP_X &CMap);
    void Store_RGB_Cube( SKL_BTM *Dst );

    void Print_Infos() const;
};

//////////////////////////////////////////////////////////
// SKL_CONVERTER
//////////////////////////////////////////////////////////

class SKL_BTM_CVRT : public SKL_BTM
{
  private:
    SKL_BTM           *_Dst;
    SKL_CONVERTER_MAP *_Map;

  protected:
    SKL_BTM *Get_Dst() const { return _Dst; }

  public:

    SKL_BTM_CVRT(SKL_MEM_I *Mem, SKL_FORMAT Fmt, SKL_BTM &Dst);
    virtual ~SKL_BTM_CVRT();
    virtual void Kill();

    virtual void Store_CMap();
    virtual void Unlock() { Convert_To(*Get_Dst(), _Map); }

    virtual void Print_Infos() const;
};

//////////////////////////////////////////////////////////

#endif /* _SKL_BTM_CVRT_H_ */

⌨️ 快捷键说明

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