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

📄 codecapi.cpp

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 CPP
字号:
//----------------------------// Symbian codec API// //----------------------------#include "rules.h"#include "global.h"#include "xvid.h"#ifdef __SYMBIAN32__#include <e32std.h>#include <e32base.h>//GLDEF_C TInt E32Dll(TDllReason){ return KErrNone; }#else#endif//----------------------------struct S_decoder{   xvid_dec_frame_t xvid_dec_frame;   dword size_x;   void *dec_handle;};#define FCC(a, b, c, d) dword((d<<24) | (c<<16) | (b<<8) | a)//----------------------------void * InitCodec(dword sx, dword sy, dword fcc){   switch(fcc){   case FCC('x', 'v', 'i', 'd'):   case FCC('X', 'V', 'I', 'D'):   case FCC('D', 'I', 'V', 'X'):   case FCC('d', 'i', 'v', 'x'):   case FCC('D', 'X', '5', '0'):   case FCC('3', 'I', 'V', '2'):   case FCC('3', 'i', 'v', '2'):   case FCC('3', 'I', 'V', 'X'):      break;   default:      return NULL;   }   S_decoder *dec = new(ELeave) S_decoder;   dec->size_x = sx;   xvid_dec_frame_t &xvid_dec_frame = dec->xvid_dec_frame;   MemSet(&xvid_dec_frame, 0, sizeof(xvid_dec_frame));   xvid_dec_frame.version = XVID_VERSION;   //xvid_dec_frame.general = 0;                           //convert into true-color, we'll perform convertion to dest format ourselves   //xvid_dec_frame.output.csp = XVID_CSP_BGR;   xvid_gbl_init_t xvid_gbl_init;   MemSet(&xvid_gbl_init, 0, sizeof(xvid_gbl_init));   xvid_gbl_init.version = XVID_VERSION;   xvid_gbl_init.cpu_flags = 0;   //xvid_gbl_init.debug = XVID_DEBUG_ERROR | XVID_DEBUG_STARTCODE | XVID_DEBUG_HEADER;   xvid_global(NULL, 0, &xvid_gbl_init, NULL);   xvid_dec_create_t xvid_dec_create;   MemSet(&xvid_dec_create, 0, sizeof(xvid_dec_create));   xvid_dec_create.version = XVID_VERSION;   xvid_dec_create.width = 0;   xvid_dec_create.height = 0;#ifdef PROFILE   xvid_dec_create.prof = &prof;#endif   xvid_dec_create.width = sx;   xvid_dec_create.height = sy;   int ret = xvid_decore(NULL, XVID_DEC_CREATE, &xvid_dec_create, NULL);   if(ret){      delete dec;      return NULL;   }   dec->size_x = sx;   dec->dec_handle = xvid_dec_create.handle;   return dec;}//----------------------------void CloseCodec(void *handle){   S_decoder *dec = (S_decoder*)handle;   xvid_decore(dec->dec_handle, XVID_DEC_DESTROY, NULL, NULL);   delete dec;}//----------------------------int DecodeFrame(void *handle, const void *buf, dword sz_in, byte *&y, byte *&u, byte *&v, dword &pitch){   S_decoder *dec = (S_decoder*)handle;   dec->xvid_dec_frame.bitstream = buf;   dec->xvid_dec_frame.length = sz_in;   xvid_decore(dec->dec_handle, XVID_DEC_DECODE, &dec->xvid_dec_frame, NULL);   const C_xvid_image *img = dec->xvid_dec_frame.img_out;   if(!img)      return 0;   y = img->y;   u = img->u;   v = img->v;   int mb_width = (dec->size_x + 15) / 16;   pitch = 16 * mb_width + 2 * EDGE_SIZE;   return 1;}//----------------------------

⌨️ 快捷键说明

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