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

📄 mpeg4contrl.h

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 H
字号:
/********************************************************************************************
 Copyright (C), 2007, Fuzhou Rockchip Co.,Ltd.
 File:
  Mpeg4Contrl.h
 Description:
  Mpeg4 Contrl.
 Note:
  None.
 Author:
  ljn
 $Log: Mpeg4Contrl.h,v $
 Revision 1.2  2007/11/21 10:13:22  Linjiangnan
 *** empty log message ***

********************************************************************************************/

#ifndef _MPEG4CONTRL_H
#define _MPEG4CONTRL_H

#include "fs.h"
#include "AviFile.h"

#ifdef  _IN_MPEG4CONTRL_H
#undef  EXT
#define EXT
#else
#define EXT extern
#endif

#define   VIDEO_ALIGN_ATTR( align )    __align(align)

#define IMEM_ADDR_AHB0   0x30040000

//#define MAX_FRAME_WIDTH         800
//#define MAX_FRAME_HEIGHT        480

#define YUV_BUFFER_SIZE        ((MAX_FRAME_WIDTH*MAX_FRAME_HEIGHT*3)>>1)
#define YUV_BUFFER_NUM        8
#define MAX_FRAME_NUM                   32

#define MB_MV_INFO_SIZE                 (MAX_FRAME_WIDTH>>4)*(MAX_FRAME_HEIGHT>>4)*32

#define BITSREAM_BUFFER_SIZE   4096
#define MAX_BITSREAM_BLOCK_NUM      16

#define VIDEO_DECODE_OK        0
#define VIDEO_DECODE_IDLE       1
#define VIDEO_YUV_DATA_NULL       0xff

#define SEND_YUV2LCD_FINISHED           1
#define SEND_YUV2LCD_READY              0

#define FFD_FFW_INTERVAL                10

#define VIDEO_OPERATION_PLAY            0
#define VIDEO_OPERATION_FFD_FFW         1

#define TIMER_ISR_NUM_PER_FRAME         5
#define FFD_FFW_DISPLAY_SPEED           25

#define MAX_DISCREPANCY_FRAME_NUM       50

#define XVIDCORE_DEC_OK      0
#define XVIDCORE_DEC_MEMORY_OK    0
#define XVIDCORE_DEC_IFRAME_OK    0
#define XVIDCORE_DEC_PFRAME_OK              0
#define XVIDCORE_DEC_BFRAME_OK              0
#define XVIDCORE_DEC_MB_OK                  0

#define XVIDCORE_DEC_END                    1
#define XVIDCORE_DEC_EXIT                   2

#define XVIDCORE_DEC_MEMORY_ERR    (-1)
#define XVIDCORE_DEC_HEADER_ERR    (-2)
#define XVIDCORE_DEC_MEMORY_INIT            (-3)
#define XVIDCORE_DEC_FORMAT_ERR             (-4)
#define XVIDCORE_DEC_IFRAME_ERR    (-5)
#define XVIDCORE_DEC_PFRAME_ERR    (-6)
#define XVIDCORE_DEC_BFRAME_ERR             (-7)
#define XVIDCORE_DEC_MB_ERR                 (-8)
#define XVIDCORE_DEC_VLD_ERR                (-9)
#define XVIDCORE_DEC_RESYNC_MARKER          (-10)

#define BIT_TEST(num, index)            ((num>>index) & (1))
#define BIT_SET_VAL(num, index, val)    num = ((num&(~(1<<index)))|(val<<index))
#define IS_VIDEO_DECODE_OK(status)      ((status != XVIDCORE_DEC_MEMORY_ERR) && (status != XVIDCORE_DEC_HEADER_ERR) && (status != XVIDCORE_DEC_FORMAT_ERR))
#define IS_VIDEO_DECODE_END(status)    (status != XVIDCORE_DEC_END)


EXT char *bitStreamBuf;//VIDEO_ALIGN_ATTR(8) char bitStreamBuf[4096*MAX_BITSREAM_BLOCK_NUM]; //
EXT char *yuvBuf;//VIDEO_ALIGN_ATTR(8) unsigned char yuvBuf[YUV_BUFFER_NUM*YUV_BUFFER_SIZE];//
EXT char *mbMvInfoBuf;
EXT char *aviVideoBufRemain;
EXT int filledBlockNum;
EXT unsigned short *frameList;
EXT unsigned int  curFrame;
EXT unsigned int  displayedYuvBuffer;
EXT int  timerIsrTimes;
EXT unsigned int  lcdUpdateTimer;
EXT unsigned int  dispFrameNum;
EXT unsigned int  aviTimerCounter;
EXT int  dispInterval;
EXT BACKGRND *aviVideoScreen;  //BACKGRND AviVideoScreen[YUV_BUFFER_NUM];
EXT DWDMALLP *aviVideoLLPList;  //DWDMALLP AviVideoScreen[YUV_BUFFER_NUM][1000];
EXT BACKGRND *aviVideoScreenTemp;   // add by hzf
EXT DWDMALLP *aviVideoLLPListTemp;
EXT int ffd_ffw_times;
EXT int fillBitStreamOff;
EXT int aviPlayState;
EXT int isAudioPlayEnd;

//EXT unsigned int  curBuffer;
//EXT unsigned int  frameNumInList;
//EXT unsigned long gotSize;  //added by ljn for test
//EXT MY_FILE *aviFile;

EXT int AviFillBitStreamForDecoder(void *);
EXT void AviCreateVideoScreen(MainAVIHeader *avihdr);
EXT void AviShowVideoFrame(void);
EXT int AviIsLastFrame(void *);
EXT int AviVideoDecInit(void *);
EXT void AviFrameDispCtrl(void *);
EXT int AviVideoFileInit(void *PathName);
EXT int AviFFW(unsigned int step);
EXT int AviFFD(unsigned int step);
EXT void AviResume(void *);
EXT void AviDecodeEnd(void *);
EXT void AviGetTimeInfoMs(unsigned int *curTime, unsigned int *totalTime);
EXT int AviPlayPause(void);
EXT int IsAviReachEnd(void);
EXT int AviGetCurYUVInfo(char **pYuv, long *pWidth, long *pHeight);
EXT int AviVideoSeek(long msTime);
EXT int AviGetAudioData(char *buffer, DWORD size);
EXT short AviGetDecStatus(void);
//extern  void BIT_SET_VAL(unsigned int num, unsigned char index,  unsigned char val);
EXT int AviVideoSeek(long msTime);
EXT int AviGetResolution(long *pWidth, long *pHeight);
EXT int AviGetYuvAddr(char **pYuv);
EXT unsigned int AviGetCurTime(void);
EXT unsigned int AviGetTotalTime(void);

#endif

⌨️ 快捷键说明

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