Harap maklum: halaman ini telah diterjemahkan secara automatik. Sekiranya boleh, anda mesti membacanya dalam salah satu bahasa berikut:

Panduan Pengaturcaraan IMP

Dokumentasi API boleh dilihat di sini:

IMP ( Ingenic Media Platform ) ( lihat imp_system.h )

konsep asas

Program T20 / T21 didasarkan pada konsep-konsep berikut:

  1. Peranti ( = Device )
    Peranti melengkapkan fungsi. Contoh:
    • Framesource : Lengkapkan output klip video.
    • Encoder : Lengkapkan kod video atau fungsi kod imej.
  2. Kumpulan ( = Group )
    Kumpulan ialah unit input data terkecil. Peranti boleh mempunyai pelbagai kumpulan dan setiap kumpulan boleh menerima hanya satu saluran input data. Kumpulan boleh mempunyai beberapa keputusan.
    Kumpulan juga merupakan bekas untuk fungsi “ khusus “. Lihat penjelasan di bahagian saluran untuk maklumat lanjut.
  3. Eligo ( = Output )
    output adalah unit output data terkecil bagi setiap kumpulan.
    Saluran biasanya berkaitan dengan satu unit fungsi tunggal.
    Sebagai contoh:
    • Untuk CODEL, Saluran melengkapkan fungsi H264 atau kod JPEG.

    • Untuk IVS, saluran melengkapkan fungsi algoritma tertentu dan parameter algoritma tertentu yang ditentukan semasa membuat saluran

    • Untuk OSD, terdapat rantau yang serupa dengan Channel, sebuah rantau adalah kawasan yang supermetated tertentu yang boleh menjadi Atas ( Image ) Cover ( Occlusion ), dll.

    • Untuk FrameSource, saluran menghasilkan imej asal dan saluran FrameSource sebenarnya adalah kumpulan

    Saluran, sebagai unit berfungsi, biasanya dipelihara dalam kumpulan ( kecuali FrameSource ) menerima data.

    Bilangan saluran yang dapat dirakam oleh kumpulan pelbagai peranti juga berbeza.

Pautan Modul ( Bind )

Selepas dua kumpulan dikaitkan dengan Bind, data dari kumpulan sumber secara automatik akan menghantar ke destinasi.
Oleh kerana kumpulan itu adalah unit input data terkecil dan output adalah unit output data terkecil, deviceID, groupID dan outputID srcCell dalam dua parameter IMP_System_Bind (IMPCell * srcCell, IMPCell * dstCell) adalah sah.

Walaupun dstCell hanya sah untuk deviceID dan groupID, outputID tidak masuk akal seperti pintu masuk data.

Contoh 1:

IMPCell fs_chn0 = {DEV_ID_FS, 0, 0};    // FrameSource deviceID: DEV_ID_FS groupID: 0 outputID: 0
IMPCell enc_grp0 = {DEV_ID_ENC, 0, 0}; // ENC deviceID: DEV_ID_ENC groupID : 0 outputID: 0, où le troisième paramètre de enc_grp0 n'a pas de sens. 
int ret = IMP_System_Bind (& fs_chn0, & enc_grp0);
if(ret <0>)
  printf ("Bind FrameSource Channel0 and Encoder Group0 failed \ n");

Keputusan:

Contoh 2:

// flux de données principal
IMPCell fs_chn0 = {DEV_ID_FS, 0, 0};
IMPCell osd_grp0 = {DEV_ID_OSD, 0, 0};
IMPCell enc_grp0 = {DEV_ID_ENC, 0, 0};
int ret = IMP_System_Bind(&fs_chn0, &osd_grp0);
if (ret < 0)
    printf("Bind FrameSource Channel0 and OSD Group0 failed\n");

int ret = IMP_System_Bind(&osd_grp0, &enc_grp0);
if (ret < 0)
    printf("Bind OSD Group0 and Encoder Group0 failed\n");

// flux de données lié 
IMPCell fs_chn1_output0 = {DEV_ID_FS, 1, 0};
IMPCell ivs_grp0 = {DEV_ID_IVS, 0, 0};
IMPCell osd_grp1 = {DEV_ID_OSD, 1, 0};
IMPCell enc_grp1 = {DEV_ID_ENC, 1, 0};

int ret = IMP_System_Bind(&fs_chn1_output0, &ivs_grp0);
if (ret < 0)
    printf("Bind FrameSource Channel1 and IVS Group0 failed\n");

int ret = IMP_System_Bind(&ivs_grp0, &osd_grp1);
if (ret < 0)
    printf("Bind IVS Group0 and OSD Group1 failed\n");

int ret = IMP_System_Bind(&osd_grp1, &enc_grp1);
if (ret < 0)
    printf("Bind OSD Group1 and Encoder Group1 failed\n");

Memohon adalah aplikasi biasa Bind : Kod dua saluran.

Nota:

Fungsi

int IMP_System_Init (void )

Permulaan sistem IMP.

Permulaan sistem int IMP_System_Exit (void). _

Selepas memanggil fungsi ini, semua memori dan handles IMP akan dikeluarkan, dan unit perkakasan akan ditutup.

Selepas memanggil fungsi ini, semua memori dan int64_t IMP_System_GetTimeStamp (void) _ akan dikeluarkan, dan unit perkakasan akan ditutup. (

Dapatkan medan masa sistem IMP dalam mikrosecond.
Pulangan: Masa di mikroekond.

Dapatkan medan masa sistem int IMP_System_RebaseTimeStamp (bases int64_t) dalam mikrosecond. _ Pulangan: Masa di mikroekond. (

Tentukan Sistem Timestamp IMP dalam Mikroseconds.
Pulangan: 0 jika berjaya.

Tentukan Sistem Timestamp uint32_t IMP_System_ReadReg32 (uint32_t u32Addr) dalam Mikroseconds. _ Pulangan: 0 jika berjaya. _

Baca nilai daftar 32-bit.

void IMP_System_WriteReg32 (uint32 t regaddr, nilai uint32 t)

Tulis nilai dalam pendaftaran 32-bit.

Catatan: Sila panggil API ini dengan teliti dan periksa makna pendaftaran, jika tidak, ia boleh menyebabkan kesalahan sistem.

int IMP sistem GetVersion (IMPVersion * pstVersion)

Dapatkan sistem sistem IMP.

const char * IMP sistem GetCPUInfo (void)

Dapatkan maklumat mengenai model CPU.
Catatan: Nilai kembali adalah rentetan model CPU, misalnya, untuk T10 terdapat “T10”dan “T10-Lite”.

int IMP sistem (

Pautan antara sel sumber dan destinasi.

Catatan 1: Menurut konsep Perangkat, Kelompok dan Keluaran, setiap perangkat dapat memiliki beberapa kelompok, dan setiap kelompok dapat memiliki beberapa output, Grup digunakan sebagai antara muka input Perangkat, dan Keluaran digunakan sebagai antara muka produk Peranti. Oleh itu pautan itu sebenarnya menghubungkan output peranti output tertentu ke Kumpulan peranti input tertentu.

Nota 2: Selepas pautan yang berjaya, data yang dihasilkan oleh srcCell ( ELEGO ) akan dipindahkan secara automatik ke destinasi ( Kumpulan ).

int IMP sistem (

Nyahpasang sumber dan destinasi.

int IMP sistem (

Mengambil maklumat dari sel sumber yang berkaitan dengan tujuan.