3 Ingenic の基礎となる API インターフェイスのカプセル化 2

概要

        前のセクションでは、さまざまな Ingenic チップの実装の詳細を保護するために、統一されたエラー コードとデータ構造を定義しました。準備作業は完了しました。次に、Ingenic の基礎となる API インターフェイスのパブリック基本クラスを定義する必要があります。共通基本クラスで提供されるインターフェイスはすべて純粋な仮想関数であり、T31、T40、T41 などのさまざまな IPC チップ ソリューションは共通基本クラスから派生し、これらの仮想関数を実装します。

共通の基本クラス

        まず第一に、共通の基本クラスのインターフェイスを定義するためにどのような粒度が使用されるのかを考える必要があります。粒度が細かすぎるため、使用するのが面倒で、関数を完了するにはさらに多くのインターフェイスを呼び出す必要があります。粒度が粗すぎるため、上位層の柔軟性が十分でなく、一部のインターフェイスが提供されない可能性があります。したがって、共通基底クラスのインターフェースを設計する際には、十分な柔軟性を提供するだけでなく、呼び出しの利便性も満たすことを総合的に考慮する必要があります。

        ISVP-SDK は、imp ライブラリや sysutils ライブラリなど、アプリケーション層開発用のアプリケーション ライブラリを提供します。imp ライブラリは機能モジュールに分割されており、異なるモジュールは異なるヘッダー ファイルで定義されます。例: データ バインディングおよびシステム制御関数は imp_system.h、H264、H265 にあり、JPEG エンコード関数は imp_encoder.h にあります。これらのモジュールに基づいてインターフェイスを定義することもできるため、インターフェイスの使用がより明確になります。同時に、上位層がインターフェイスをどのように使用するかについても考慮する必要があり、カプセル化されたインターフェイスは上位層の呼び出しの利便性を満たすことができます。

        MPP_API_Base.h ファイルで定義される共通の基本クラスは次のとおりです。

#pragma once

#include "MPP_API_Types.h"

class CMppApi_Base
{
public:
    CMppApi_Base() {}
    virtual ~CMppApi_Base() {}

    virtual int Sys_Init(const TMppSystemParam &param) = 0;
    virtual int Sys_Deinit() = 0;
    virtual int Sys_BindItem(const TMppBindItem &srcItem, const TMppBindItem &dstItem) = 0;
    virtual int Sys_UnbindItem(const TMppBindItem &srcItem, const TMppBindItem &dstItem) = 0;
    virtual int Sys_GetChipID(std::string &strID) = 0;
    virtual int Sys_GetRtcTime(TMppRtcTime &rtcTime) = 0;
    virtual int Sys_SetRtcTime(const TMppRtcTime &rtcTime) = 0;

    virtual int Isp_SetHue(unsigned char ucPercent, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_SetContrast(unsigned char ucPercent, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_SetBrightness(unsigned char ucPercent, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_SetSaturation(unsigned char ucPercent, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_SetSharpness(unsigned char ucPercent, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_GetRunningMode(bool &bNight, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_SetRunningMode(bool bNight, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_SetHorFlip(bool bEnable, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_SetVerFlip(bool bEnable, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_SetHorVerFlip(bool bEnable, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_SetAntiFlicker(IMppAntiflickerMode mode, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_GetExposureAttr(TMppIspExposureAttr &expAttr, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_GetWhiteBalance(TMppIspWBAttr &wbAttr, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_SetWhiteBalance(const TMppIspWBAttr &wbAttr, unsigned int uiCameraChannel = 0) = 0;
    virtual int Isp_GetGlobalWhiteBalance(TMppIspWBAttr &wbAttr, unsigned int uiCameraChannel = 0) = 0;

    virtual int Fs_Create(int nFsChn, unsigned int uiFrameRate, unsigned int uiWidth, unsigned int uiHeight, 
        bool bExpandNrVbs = false) = 0;
    virtual int Fs_Destroy(int nFsChn) = 0;
    virtual int Fs_Enable(int nFsChn) = 0;
    virtual int Fs_Disable(int nFsChn) = 0;
    virtual int Fs_SetDepth(int nFsChn, int nDepth) = 0;
    virtual int Fs_GetFrame(int nFsChn, unsigned char *pFrame, unsigned int &uiFrameLen, 
        unsigned int &uiWidth, unsigned int &uiHeight) = 0;

    virtual int Enc_CreateGroup(int nGrpChn) = 0;
    virtual int Enc_DestroyGroup(int nGrpChn) = 0;
    virtual int Enc_CreateChannel(int nGrpChn, int nEncChn, const TMppEncChannelParam &param) = 0;
    virtual int Enc_DestroyChannel(int nEncChn) = 0;
    virtual int Enc_StartRecvPic(int nEncChn) = 0;
    virtual int Enc_StopRecvPic(int nEncChn) = 0;
    virtual int Enc_GetFd(int nEncChn) = 0;
    virtual int Enc_PollingStream(int nEncChn, unsigned int uiTimeoutMs = 10) = 0;
    virtual int Enc_GetStream(int nEncChn, unsigned char *pFrame, unsigned int &uiFrameLen, 
        unsigned long long &ui64TimestampUs, bool &bKeyFrame) = 0;
    virtual int Enc_RequestIDR(int nEncChn) = 0;
    virtual int Enc_FlushStream(int nEncChn) = 0;
    virtual int Enc_SetFrameRate(int nEncChn, unsigned int uiFrameRate) = 0;
    virtual int Enc_SetBitrate(int nEncChn, unsigned int uiBitrateKbps) = 0;
    virtual int Enc_SetKeyFrameInterval(int nEncChn, unsigned int uiKeyFrameInterval) = 0;
    virtual int Enc_SetBitrateCtrlMode(int nEncChn, IMppVideoBitrateCtrlMode mode) = 0;
    virtual int Enc_SetJpegQualityPercent(int nEncChn, unsigned char ucQualityPercent) = 0;

    virtual int Osd_CreateGroup(int nGrpChn) = 0;
    virtual int Osd_DestroyGroup(int nGrpChn) = 0;
    virtual int Osd_CreateRegion(int nGrpChn, int &nRgnChn) = 0;
    virtual int Osd_DestroyRegion(int nGrpChn, int nRgnChn) = 0;
    virtual int Osd_SetRegionAttr(int nRgnChn, const TMppOsdRegionAttr &attr) = 0;
    virtual int Osd_SetGroupRegionAttr(int nGrpChn, int nRgnChn, const TMppOsdGroupRegionAttr &attr) = 0;
    virtual int Osd_ShowRegion(int nGrpChn, int nRgnChn, bool bShow) = 0;
    virtual int Osd_UpdateRegionData(int nRgnChn, const TMppOsdRegionData &data) = 0;

    virtual int Ain_SetPubAttr(unsigned int uiSampleRate, bool bStereo, unsigned int uiSamplesPerFrame, 
        bool bDigitalMic = false) = 0;
    virtual int Ain_EnableDevice() = 0;
    virtual int Ain_DisableDevice() = 0;
    virtual int Ain_EnableChannel() = 0;
    virtual int Ain_DisableChannel() = 0;
    virtual int Ain_GetFrame(unsigned char *pFrame, unsigned int &uiFrameLen, unsigned int uiTimeoutMs = 10) = 0;
    virtual int Ain_SetVolume(unsigned char ucVolumePercent) = 0;
    virtual int Ain_SetGain(unsigned char ucGainPercent) = 0;
    virtual int Ain_EnableAec(bool bDefaultSpeaker = true) = 0;
    virtual int Ain_DisableAec() = 0;
    virtual int Ain_EnableNs(IMppNoiseSuppressLevel level) = 0;
    virtual int Ain_DisableNs() = 0;

    virtual int Aenc_RegisterEncoder(IMppAudioCodecAlg type) = 0;
    virtual int Aenc_UnregisterEncoder(IMppAudioCodecAlg type) = 0;
    virtual int Aenc_CreateChannel(IMppAudioCodecAlg type) = 0;
    virtual int Aenc_DestroyChannel() = 0;
    virtual int Aenc_SendFrame(unsigned char *pFrame, unsigned int uiFrameLen) = 0;
    virtual int Aenc_GetStream(unsigned char *pFrame, unsigned int &uiFrameLen, 
        unsigned long long &ui64TimestampUs, unsigned int uiTimeoutMs = 10) = 0;

    virtual int Aout_SetPubAttr(unsigned int uiSampleRate, bool bStereo, unsigned int uiSamplesPerFrame, 
        bool bDefaultSpeaker = true) = 0;
    virtual int Aout_EnableDevice() = 0;
    virtual int Aout_DisableDevice() = 0;
    virtual int Aout_EnableChannel() = 0;
    virtual int Aout_DisableChannel() = 0;
    virtual int Aout_SendFrame(unsigned char *pFrame, unsigned int uiFrameLen) = 0;
    virtual int Aout_SetVolume(unsigned char ucVolumePercent) = 0;
    virtual int Aout_SetGain(unsigned char ucGainPercent) = 0;
    virtual int Aout_FlushBuf() = 0;
    virtual int Aout_ClearBuf() = 0;

    virtual int Adec_RegisterDecoder(IMppAudioCodecAlg type) = 0;
    virtual int Adec_UnregisterDecoder(IMppAudioCodecAlg type) = 0;
    virtual int Adec_CreateChannel(IMppAudioCodecAlg type) = 0;
    virtual int Adec_DestroyChannel() = 0;
    virtual int Adec_SendStream(unsigned char *pFrame, unsigned int uiFrameLen) = 0;
    virtual int Adec_GetFrame(unsigned char *pFrame, unsigned int &uiFrameLen, unsigned int uiTimeoutMs = 10) = 0;
    virtual int Adec_ClearBuf() = 0;

    virtual int Ivs_CreateGroup(int nGrpChn) = 0;
    virtual int Ivs_DestroyGroup(int nGrpChn) = 0;
    virtual int Ivs_CreateChannel(int nGrpChn, int nIvsChn, void *pHandler) = 0;
    virtual int Ivs_DestroyChannel(int nIvsChn) = 0;
    virtual int Ivs_StartRecvPic(int nIvsChn) = 0;
    virtual int Ivs_StopRecvPic(int nIvsChn) = 0;
    virtual int Ivs_PollingResult(int nIvsChn, int nTimeoutMs = -1) = 0;
    virtual int Ivs_GetResult(int nIvsChn, void **ppResult) = 0;
    virtual int Ivs_ReleaseResult(int nIvsChn, void *pResult) = 0;
    virtual int Ivs_GetParam(int nIvsChn, void *pParam) = 0;
    virtual int Ivs_SetParam(int nIvsChn, void *pParam) = 0;

    virtual int Utils_GetFsChn(unsigned int uiCameraChannel, IMppVideoStreamType type) = 0;
    virtual int Utils_GetEncGrp(unsigned int uiCameraChannel, IMppVideoStreamType type) = 0;
    virtual int Utils_GetEncChn(unsigned int uiCameraChannel, IMppVideoStreamType type, bool bJpeg) = 0;
    virtual int Utils_GetOsdGrp(unsigned int uiCameraChannel, IMppVideoStreamType type) = 0;
    virtual int Utils_GetIvsGrp(unsigned int uiCameraChannel) = 0;
};

インターフェースの説明

        上記のヘッダー ファイルでは、モジュールに応じて多数の純粋仮想関数インターフェイスが定義されています。以下では、それらを 1 つずつ紹介します。

        □ システム層インターフェース

        Sys_Init: システム初期化インターフェイス。カメラ情報 (複数がサポートされています) と OSD メモリ プールのサイズを渡す必要があります。

        Sys_Deinit: システムの初期化解除インターフェイス。

        Sys_BindItem: システム バインディング用のインターフェイス。2 つのモジュールのバインドをサポートし、データはバインド後に自動的にストリーミングされます。

        Sys_UnbindItem: システム アンバインド用のインターフェイス。2 つのモジュールのバインド解除をサポートします。

        Sys_GetChipID: チップの一意の ID を取得するインターフェイス。

        Sys_GetRtcTime: システム RTC 時間を取得するためのインターフェイス (RTC 関連回路をサポートするにはハードウェアが必要です)。

        Sys_SetRtcTime: システム RTC 時間を設定するためのインターフェイス (RTC 関連回路をサポートするにはハードウェアが必要です)。

        □ ISPインターフェース

        Isp_SetHue: チャネルの色相を設定します。値の範囲は 0 ~ 100 です。

        Isp_SetContrast: チャネルのコントラストを設定します。値の範囲は 0 ~ 100 です。

        Isp_SetBrightness: チャンネルの明るさを設定します。値の範囲は 0 ~ 100 です。

        Isp_SetSaturation: チャンネルの彩度を設定します。値の範囲は 0 ~ 100 です。

        Isp_SetSharpness: 特定のチャンネルのシャープネスを設定します。値の範囲は 0 ~ 100 です。

        Isp_GetRunningMode: 昼夜を問わず、チャネル ISP の実行モードを取得します。

        Isp_SetRunningMode: チャネル ISP の実行モードを昼または夜に設定します。

        Isp_SetHorFlip: 特定のチャンネルの映像を左右反転するかどうかを設定します。

        Isp_SetVerFlip: 特定のチャンネルの映像を上下反転するかどうかを設定します。

        Isp_SetHorVerFlip: 特定のチャンネルの画像を水平方向または垂直方向に反転するかどうかを設定します。

        Isp_SetAntiFlicker: 特定のチャンネル画像のフリッカー防止モードを設定します。

        Isp_GetExposureAttr: チャンネルの露出属性を取得します。

        Isp_GetWhiteBalance: チャンネルのホワイトバランス情報を取得します。

        Isp_SetWhiteBalance: 特定のチャンネルのホワイトバランス情報を設定します。

        Isp_GetGlobalWhiteBalance: チャンネルのグローバル ホワイト バランス情報を取得します。

        □ フレームソースインターフェース

        Fs_Create: 指定されたフレーム レート、解像度、その他の情報に基づいてフレーム ソース チャネルを作成します。

        Fs_Destroy: 指定されたフレーム ソース チャネルを破棄します。

        Fs_Enable: 指定されたフレーム ソース チャネルを有効にします。

        Fs_Disable: 指定されたフレーム ソース チャネルを無効にします。

        Fs_SetDepth: 指定されたフレーム ソース チャネルの深度値を設定します (YUV データなどのビデオ生データを取得するために使用されます)。

        Fs_GetFrame: 指定されたフレーム ソース チャネルのビデオ生データ フレームを取得します。

        □コーディングインターフェース

        Enc_CreateGroup: エンコードされたグループを作成します。

        Enc_DestroyGroup: エンコードされたグループを破棄します。

        Enc_CreateChannel: 指定されたグループ内にエンコード チャネルを作成します。チャネルを作成するとき、エンコードプロファイル、解像度、フレームレートなどのパラメータを渡すことができます。

        Enc_DestroyChannel: エンコード チャネルを破棄します。

        Enc_StartRecvPic: 指定されたエンコード チャネルのピクチャの受信を開始します。

        Enc_StopRecvPic: 指定されたエンコード チャネルからのピクチャの受信を停止します。

        Enc_GetFd: IO 多重化の選択に使用される、指定されたエンコード チャネルのファイル記述子を取得します。

        Enc_PollingStream: 指定されたエンコード チャネルのストリームの準備ができているかどうかをクエリします。タイムアウト期間はミリ秒単位で設定できます。

        Enc_GetStream: 指定されたエンコード チャネルのストリーム データのフレームを取得します。

        Enc_RequestIDR: 指定されたエンコード チャネルの IDR フレームを要求します。

        Enc_FlushStream: 指定されたエンコード チャネルの古いコード ストリームをフラッシュし、IDR フレームでエンコードを開始します。

        Enc_SetFrameRate: 指定したエンコード チャネルのフレーム レートを設定します。

        Enc_SetBitrate: 指定したエンコード チャネルのビット レートを設定します。

        Enc_SetKeyFrameInterval: 指定したエンコード チャネルのキー フレーム間隔を設定します。

        Enc_SetBitrateCtrlMode: 指定されたエンコード チャネルのレート制御モードを CBR、VBR、または ABR に設定します。

        Enc_SetJpegQualityPercent: 指定されたエンコード チャネルの JPEG 画像の品質を設定します。値の範囲は 0 ~ 100 です。

        □ OSDインターフェース

        Osd_CreateGroup: OSD グループを作成します。

        Osd_DestroyGroup: OSD グループを破棄します。

        Osd_CreateRegion: 指定されたグループ内に領域を作成します。

        Osd_DestroyRegion: 指定されたグループ内の領域を破棄します。

        Osd_SetRegionAttr: 領域のタイプ、場所、データなどを含む領域の属性を設定します。

        Osd_SetGroupRegionAttr: 表示するかどうか、ズーム率、レベルなどを含むグループの領域属性を設定します。

        Osd_ShowRegion: 特定の領域を表示するかどうか。

        Osd_UpdateRegionData: 特定の領域のデータを更新します。たとえば、時間がビデオ画面に重ねられると、時間の値が変化し、その領域の時間を更新するにはこのインターフェイスを呼び出す必要があります。

        □入力オーディオインターフェース

        Ain_SetPubAttr: 入力オーディオのパブリック属性を設定します。これには、サンプリング レート、ステレオかどうか、フレームあたりのサンプル数などが含まれます。入力オーディオ用に他のインターフェイスを呼び出す前に、このインターフェイスを最初に呼び出す必要があります。

        Ain_EnableDevice: 入力オーディオデバイスを有効にします。

        Ain_DisableDevice: 入力オーディオデバイスを無効にします。

        Ain_EnableChannel: 入力オーディオチャンネルを有効にします。

        Ain_DisableChannel: 入力オーディオ チャネルを無効にします。

        Ain_GetFrame: 音声検出などのアルゴリズムで使用できる、入力オーディオ チャネルの生の PCM データを取得します。

        Ain_SetVolume: 入力オーディオ チャンネルのデジタル ゲインを設定します。値の範囲は 0 ~ 100 です。

        Ain_SetGain: 入力オーディオ チャンネルのアナログ ゲインを設定します。値の範囲は 0 ~ 100 です。アナログゲインとデジタルゲインの値は、最終的な製品の構造に応じて調整する必要があり、小さすぎると相手の声がはっきりと聞こえず、大きすぎると破裂音や背景ノイズが発生しやすくなります。除去される。

        Ain_EnableAec: 入力オーディオ チャネルのエコー キャンセルを有効にします。

        Ain_DisableAec: 入力オーディオ チャネルのエコー キャンセルを無効にします。

        Ain_EnableNs: 入力オーディオ チャンネルのノイズ抑制を有効にします。

        Ain_DisableNs: 入力オーディオ チャンネルのノイズ抑制を無効にします。

        □ オーディオコーディングインターフェース

        Aenc_RegisterEncoder: オーディオ エンコーダを登録します。デフォルトでは、SDK は G711A、G711U、ADPCM_ORG_DVI4 などのエンコード アルゴリズムのみをサポートし、ADPCM_DVI や AAC などのエンコード アルゴリズムをサポートしません。ADPCM_DVI、AAC、およびその他のアルゴリズムをサポートする必要がある場合は、このインターフェイスを呼び出して、対応するオーディオ エンコーダーを登録する必要があります。

        Aenc_UnregisterEncoder: オーディオ エンコーダーの登録を解除します。

        Aenc_CreateChannel: オーディオ エンコード チャネルを作成します。

        Aenc_DestroyChannel: オーディオ エンコーディング チャネルを破棄します。

        Aenc_SendFrame: ベア PCM データをオーディオ エンコード チャネルに送信します。SDK 内にデータをキャッシュするためのキューがあり、エンコードして出力します。

        Aenc_GetStream: オーディオ エンコード チャネルからエンコードされたデータ ストリームを取得します。

        □出力オーディオインターフェース

        Aout_SetPubAttr: サンプリング レート、ステレオかどうか、フレームごとのサンプル数などを含む、出力オーディオのパブリック属性を設定します。このインターフェイスは、オーディオを出力する他のインターフェイスを呼び出す前に呼び出す必要があります。

        Aout_EnableDevice: 出力オーディオデバイスを有効にします。

        Aout_DisableDevice: 出力オーディオデバイスを無効にします。

        Aout_EnableChannel: 出力オーディオ チャネルを有効にします。

        Aout_DisableChannel: 出力オーディオ チャネルを無効にします。

        Aout_SendFrame: 生の PCM データを出力オーディオ チャネルに送信します。

        Aout_SetVolume: 出力オーディオ チャンネルのデジタル ゲインを設定します。値の範囲は 0 ~ 100 です。

        Aout_SetGain: 出力オーディオ チャンネルのアナログ ゲインを設定します。値の範囲は 0 ~ 100 です。アナログゲインとデジタルゲインの値は、最終的な製品の構造に応じて調整する必要があり、小さすぎると聞き取りにくくなり、大きすぎるとポップ音や周囲のノイズが発生しやすくなります。削除されました。

        Aout_FlushBuf: 出力オーディオ チャネル内のすべてのデータが再生されるまで待機します。

        Aout_ClearBuf: 出力オーディオ チャネルのデータ バッファをクリアします。

        □ オーディオデコードインターフェース

        Adec_RegisterDecoder: オーディオ デコーダを登録します。デフォルトでは、SDK は G711A、G711U、ADPCM_ORG_DVI4 などのデコード アルゴリズムのみをサポートし、ADPCM_DVI や AAC などのデコード アルゴリズムはサポートしません。ADPCM_DVI をサポートする必要がある場合は、このインターフェイスを呼び出して、対応するオーディオ デコーダを登録する必要があります。AAC をサポートする必要がある場合、SDK の登録メカニズムを使用して AAC をデコードする際に欠陥や問題があり、AAC を正常にデコードできないため、このインターフェイスを呼び出して登録する必要はありません。

        Adec_UnregisterDecoder: オーディオ デコーダの登録を解除します。

        Adec_CreateChannel: オーディオ デコード チャネルを作成します。AAC をサポートする必要がある場合、パラメータを MppAudioCodecAlg_AAC に渡すことができます。

        Adec_DestroyChannel: オーディオ デコード チャネルを破棄します。

        Adec_SendStream: オーディオ データ ストリームをオーディオ デコード チャネルに送信します。SDK 内にはデータをキャッシュするためのキューがあり、デコードして出力します。

        Adec_GetFrame: オーディオ デコード チャネルからデコードされた生の PCM データを取得します。

        Adec_ClearBuf: オーディオ デコード チャネルのデータ バッファをクリアします。

        □IVSインターフェース

        Ivs_CreateGroup: IVS グループを作成します。

        Ivs_DestroyGroup: IVS グループを破棄します。

        Ivs_CreateChannel: 指定されたグループ内にチャネルを作成します。

        Ivs_DestroyChannel: IVS チャネルを破棄します。

        Ivs_StartRecvPic: 指定された IVS チャネルの画像の受信を開始します。

        Ivs_StopRecvPic: 指定された IVS チャネルからの画像の受信を停止します。

        Ivs_PollingResult: 指定された IVS チャネルの結果が準備できているかどうかを照会します。タイムアウト期間はミリ秒単位で設定できます。

        Ivs_GetResult: 指定された IVS チャネルの結果を取得します。

        Ivs_ReleaseResult: 指定された IVS チャネルの結果を解放します。

        Ivs_GetParam: 指定された IVS チャネルのパラメーターを取得します。

        Ivs_SetParam: 指定された IVS チャネルのパラメータを設定します。

        □ 実用的なインターフェース

        Utils_GetFsChn: 指定されたカメラ チャネルとストリーム タイプのフレーム ソース チャネルを取得します。

        Utils_GetEncGrp: 指定されたカメラ チャネルとストリーム タイプのエンコード グループを取得します。

        Utils_GetEncChn: 指定されたカメラ チャネルとストリーム タイプのエンコード チャネルを取得します。

        Utils_GetOsdGrp: 指定されたカメラ チャネルとストリーム タイプの OSD グループを取得します。

        Utils_GetIvsGrp: 指定されたカメラ チャネルの IVS グループを取得します。

        最初にこのセクションの内容を紹介し、次のセクションでは、Ingenic チップ ソリューションで ADPCM_DVI、AAC、およびその他のエンコードおよびデコード アルゴリズムをサポートする方法を紹介します。

おすすめ

転載: blog.csdn.net/hope_wisdom/article/details/131366062