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

📄 exolmpegts.c

📁 pnx1500 mpeg2 ts stream demo
💻 C
📖 第 1 页 / 共 5 页
字号:
    vtfMPEG,                 // dataType
    vmfMPEG2,                // dataSubtype
    0                        // description
};


static tmAvFormat_t    gVdecOutputFormat =
{
    sizeof(tmAvFormat_t),  // size
    0,                     // hash
    0,                     // referenceCount
    avdcVideo,             // dataClass
    vtfYUV,                // dataType
    vdfYUV420Planar,       // dataSubtype
    0                      // description
};


static tmAudioFormat_t    gAdecMp3InputFormat =
{
    sizeof (tmAudioFormat_t),  // size
    0,                          // hash
    0,                          // referenceCount
    avdcAudio,                  // dataClass
    atfMPEG,                    // dataType
    (amfMPEG1_Layer1 |
     amfMPEG1_Layer2 |
     amfMPEG1_Layer3 |
     amfMPEG2),                 // dataSubtype
    0,                          // unused
    48000.0                     // sampleRate
};

static tmAudioFormat_t    gAdecAc3InputFormat =
{
    sizeof (tmAudioFormat_t),  // size
    0,                          // hash
    0,                          // referenceCount
    avdcAudio,                  // dataClass
    atfAC3,                     // dataType
    (UInt32)asAc3_A52,          // dataSubtype
    0,                          // unused
    48000.0                     // sampleRate
};




static tmAudioFormat_t    gArendInputFormat =
{
    sizeof (tmAudioFormat_t),  // size
    0,                          // hash
    0,                          // referenceCount
    avdcAudio,                  // dataClass
    atfLinearPCM,               // dataType
    apfStereo16,                // dataSubtype
    0,                          // unused
    48000.0                     // sampleRate
};

static Char                              gDefaultPath[128]            = DEFAULT_PATH;
static Char                              gDefaultInfile[128]          = DEFAULT_INFILE;
static Char                              gInfileName[160]             = "";
static Bool                              bLoopEnable            = False;

static tmVideoMode_t                     gVideoOutMode;        // Video output mode
static UInt32                            gVideoOutWidth;       // Width in pixels
static UInt32                            gVideoOutHeight;      // Height in pixels
static Char                              gVideoOutName[TM_VIDEOMODE_NAME_MAXSIZE]; // Video mode as a string
static tsaClockHandle_t                  gPcrClock                 = { 0 };  // PCR clock handle
static Char                              gMode[20]                 = "ntsc";
static tmFrameRate_t                     gFrameRate                = tmFrameRate_30;
static UInt32                            gDtsFrameDroppedCount        = 0;
static UInt32                            gPtsFrameDroppedCount     = 0;
static UInt32                            gPtsFrameRepeatCount      = 0;
static pids_t                            gPids                        = { 0, 0, 0, 0, 0 };
static tmosalTaskHandle_t                gPsiDataTaskHandle            = 0;
static tmosalTaskHandle_t                gUserDataTaskHandle          = 0;
static tmosalTaskHandle_t                gWatchdogTaskHandle          = 0;
static tmolVrendGfxVo_DeinterlaceMode_t  gDeinterlaceMode          = tmolVrendGfxVo_DeinterlaceModeNone;
static tmolVrendGfxVo_EddiLevel_t        gEddiLevel                = tmolVrendGfxVo_EddiOff;
static tmErrorCode_t                     gAdecMp3MainPrevErr          = TM_OK;

static Audiostream_t                     gAudioStreamType             = MP3_AUDIO_STREAM;

static tmErrorCode_t                     gAdecAc3MainPrevErr          = TM_OK;

static tmosalTaskHandle_t                gPrivateDataTaskHandle       = 0;

static Bool                         bEddiLevelSet             = False;
static Bool                              bVideoOutInterlaced          = True;
static Bool                         bFullScreen               = True;
static Bool                         bStartPtsFrameRepeatCount = False;
static Bool                         bEnableAutoStdSelect      = True;
static volatile Bool                bVdecMpegStopped          = True;
static volatile Bool                     bAdecMainStopped             = True;
static volatile Bool                     bAdecMp3MainStartedOnce      = False;
static volatile Bool                     bAdecAc3MainStartedOnce      = False;
static Bool                              bGracefulDegradationEnabled  = True;

static tmmlMmspHandle_t                  gAppInstanceMmsp;       // Application memory space instance
static IoDescripts_s                gIoDescripts;      // I/O descriptors
static ptsaInOutDescriptorSetup_t   gIoSetupPtr;       // Pointer to I/O setup
static tsaControlDescriptorSetup_t  gCSetup;           // Control setup
static VdecMpegInst_s               gVdecMpegInst;     // MPEG Video Decoder instance
static AdecMp3Inst_s                     gAdecMp3MainInst;       // MPEG main Audio Decoder instance
static ArendAoInst_s                gArendAoInst;      // Audio Renderer instance
static VrendGfxVoInst_s             gVrendGfxVoInst;   // Video Renderer instance
static DemuxMpegTsInst_s            gDemuxMpegTsInst;  // MPEG TS Demux instance
static VencAnaInst_s                gVencAnaInst;      // Analog Video Encoder instance
static FgpiInst_s                        gFgpiInst;              // Fast General Purpose Input (FGPI) instance
static FreadInst_s                  gFreadInst;        // File Reader instance
static Int                          numOfDemuxToVdecBuffers = 20; // Demux->Vdec
static Int                          numOfDemuxToAdecBuffers = 1; // Demux->Adec

static AdecAc3Inst_s                gAdecAc3MainInst;      // Dolby AC3 Audio Decoder instance

static Bool                         gUseFgpi;

#if TMFL_NEED_TIME_DOCTOR
static UInt32                       gUserTdId;         // TimeDoctor user ID
#endif

// These command line args come from the modified sysinit.c
extern Int    __argc;
extern Char **__argv;


//---------------------------------------------------------------------------
// Function Prototypes
//---------------------------------------------------------------------------
// General functions
static tmErrorCode_t  attachPictureInfo( ptsaInOutDescriptor_t  pIod );
static tmErrorCode_t  checkArgCv( Int  argc, Char  **argv );
static Bool           commandControl( Int  menuResult, Bool bUseMenu );
static void           detachPictureInfo( ptsaInOutDescriptor_t  pIod );
static int            displayCommandMenu( Bool bUseMenu );
static Int            frameRate2Frequency( tmFrameRate_t  frameRate );
static void           printMp3HeaderInfo( tmAdecMP3Format_t  *info );
static void           setClockFrequency( UInt32  freq );
static tmErrorCode_t  setVideoOutMode( String  modeName );
static tmErrorCode_t  setVideoRouter( void );
static tmErrorCode_t  startPsiDataTask( void );
static tmErrorCode_t  startUserDataTask( void );
static tmErrorCode_t  startWatchdogTask( Int  clock );
static tmErrorCode_t  startPrivateDataTask( void );
static void           printHelp( void );
tmErrorCode_t         verifyProgramNumber_GetPids( Int  menu_result );

// General component functions
static tmErrorCode_t  closeComponentInstances( void );
static void           createComponentControlDescriptors( void );
static void           destroyComponentControlDescriptors( void );
static void           createComponentSemaphores( void );
static void           destroyComponentSemaphores( void );
static void           getComponentCapabilities( void );
static void           openComponentInstances( void );
static void           setupComponentInstances( void );
static tmErrorCode_t  startComponentInstances( void );
static tmErrorCode_t  stopComponentInstances( void );
static tmErrorCode_t  startTasks( void );


// Component I/O queue checking functions
static void           checkComponentIoQueues( void );
static void           checkAdecToArendIoQueues( void );
static void           checkDemuxToAdecIoQueues( void );
static void           checkDemuxToVdecIoQueues( void );
static void           checkVdecToVrendGfxVoIoQueues( void );
static void           checkFgpiToDemuxIoQueues( void );
static void           checkFreadToDemuxIoQueues( void );


// Component I/O descriptor creation functions
static void           createComponentIoDescriptors( void );
static void           createAdecToArendIoDescriptor( void );
static void           createDemuxPsiDataIoDescriptor( void );
static void           createDemuxToAdecIoDescriptor( void );
static void           createDemuxToVdecIoDescriptor( void );
static void           createVdecToVrendGfxVoIoDescriptor( void );
static void           createVdecUserDataIoDescriptor( void );
static void           createFgpiToDemuxIoDescriptor( void );
static void           createFreadToDemuxIoDescriptor( void );
static void           createDemuxPrivateDataIoDescriptor( void );


// Component I/O descriptor deletion functions
static void           destroyComponentIoDescriptors( void );
static void           destroyAdecToArendIoDescriptor( void );
static void           destroyDemuxToAdecIoDescriptor( void );
static void           destroyDemuxToVdecIoDescriptor( void );
static void           destroyVdecToVrendGfxVoIoDescriptor( void );
static void           destroyFgpiToDemuxIoDescriptor( void );
static void           destroyFreadToDemuxIoDescriptor( void );


// Dolby AC3 Audio Decoder component functions
static tmErrorCode_t  closeAdecAc3Component( void );
static void           connectAdecAc3Decoder( pIoDescripts_s  ioDescriptsPtr );
static void           createAdecAc3ComponentControlDescriptor( void );
static void           createAdecAc3ComponentSemaphores( void );
static void           destroyAdecAc3ComponentControlDescriptor( void );
static void           destroyAdecAc3ComponentSemaphores( void );
static void           getAdecAc3Capabilities( void );
static tmErrorCode_t  lAdecAc3MainCompFunc( Int                   inst,
                                            UInt32                flags,
                                            ptsaCompletionArgs_t  args );
static tmErrorCode_t  lAdecAc3MainErrorFunc( Int              inst,
                                             UInt32           flags,
                                             ptsaErrorArgs_t  args );
static tmErrorCode_t  lAdecAc3MainProgFunc( Int                 inst,
                                            UInt32              flags,
                                            ptsaProgressArgs_t  args );
static void           openAdecAc3Instance( void );
static void           setupAdecAc3Component( pAdecAc3Inst_s  pInstance );
static tmErrorCode_t  startAdecAc3Component( void );
static tmErrorCode_t  stopAdecAc3Component( void );


// MPEG Audio Decoder component functions
static tmErrorCode_t  closeAdecMp3Component( void );
static void           connectAdecMp3Decoder( pIoDescripts_s  ioDescriptsPtr );
static void           createAdecMp3ComponentControlDescriptor( void );
static void           createAdecMp3ComponentSemaphores( void );
static void           destroyAdecMp3ComponentControlDescriptor( void );
static void           destroyAdecMp3ComponentSemaphores( void );
static void           getAdecMp3Capabilities( void );
static tmErrorCode_t  lAdecMp3MainCompFunc(  Int                   inst,
                                             UInt32                flags,
                                             ptsaCompletionArgs_t  args );
static tmErrorCode_t  lAdecMp3MainErrorFunc( Int              inst,
                                             UInt32           flags,
                                             ptsaErrorArgs_t  args );
static tmErrorCode_t  lAdecMp3MainProgFunc(  Int                 inst,
                                             UInt32              flags,
                                             ptsaProgressArgs_t  args );
static void           openAdecMp3Instance( void );
static void           setupAdecMp3Component( pAdecMp3Inst_s  pInstance );
static tmErrorCode_t  startAdecMp3Component( void );
static tmErrorCode_t  stopAdecMp3Component( void );


// Audio Renderer component functions
static tmErrorCode_t  closeArendAoComponent( void );
static void           createArendAoComponentControlDescriptor( void );
static void           createArendAoComponentSemaphores( void );
static void           destroyArendAoComponentControlDescriptor( void );
static void           destroyArendAoComponentSemaphores( void );
static void           getArendAoCapabilities( void );
static tmErrorCode_t  lArendCompFunc( Int                   inst,
                                      UInt32                flags,
                                      ptsaCompletionArgs_t  args );
static tmErrorCode_t  lArendErrorFunc( Int              inst,
                                       UInt32           flags,
                                       ptsaErrorArgs_t  args );
static tmErrorCode_t  lArendProgFunc( Int                 inst,
                                      UInt32              flags,
                                      ptsaProgressArgs_t  args );
static void           openArendAoInstance( void );
static void           setupArendAoComponent( pArendAoInst_s    pInstance );
static tmErrorCode_t  startArendAoComponent( void );
static tmErrorCode_t  stopArendAoComponent( void );


// MPEG Transport Stream Demux component functions
static tmErrorCode_t  closeDemuxMpegTsComponent( void );
static void           createDemuxMpegTsComponentControlDescriptor( void );
static void           createDemuxMpegTsComponentSemaphores( void );
static void           destroyDemuxMpegTsComponentControlDescriptor( void );
static void           destroyDemuxMpegTsComponentSemaphores( void );
static void           getDemuxMpegTsCapabilities( void );
static tmErrorCode_t  lDemuxMpegTsCompFunc( Int                   inst,
                                            UInt32                flags,
                                            ptsaCompletionArgs_t  args );
static tmErrorCode_t  lDemuxMpegTsErrorFunc( Int              inst,
                                             UInt32           flags,
                                             ptsaErrorArgs_t  args );
static tmErrorCode_t  lDemuxMpegTsProgFunc( Int                 inst,
                                            UInt32              flags,
                                            ptsaProgressArgs_t  args );
static void           openDemuxMpegTsInstance( void );
static void           setupDemuxMpegTsComponent( pDemuxMpegTsInst_s    pInstance );
static tmErrorCode_t  startDemuxMpegTsComponent( void );
static tmErrorCode_t  stopDemuxMpegTsComponent( void );


// Fast General Purpose Input (FGPI) component functions
static tmErrorCode_t  closeFgpiComponent( void );
#if 0  // :TODO: Unused code
static void           createFgpiComponentControlDescriptor( void );
static void           createFgpiComponentSemaphores( void );
static void           destroyFgpiComponentControlDescriptor( void );
static void           destroyFgpiComponentSemaphores( void );
#endif
static void           getFgpiCapabilities( void );
static tmErrorCode_t  lFgpiCompFunc( Int                   inst,
                                     UInt32                flags,
                                     ptsaCompletionArgs_t  args );
static tmErrorCode_t  lFgpiErrorFunc( Int              inst,
                                      UInt32           flags,
                                      ptsaErrorArgs_t  args );
static tmErrorCode_t  lFgpiProgFunc(  Int                 inst,
                                      UInt32              flags,
                                      ptsaProgressArgs_t  args );
static void           openFgpiInstance( void );
static void           setupFgpiComponent( pFgpiInst_s  pInstance );
static tmErrorCode_t  startFgpiComponent( void );
static tmErrorCode_t  stopFgpiComponent( void );

// File Reader component functions
static tmErrorCode_t  closeFreadComponent( void );
static void           createFreadComponentControlDescriptor( void );
static void           createFreadComponentSemaphores( void );
static void           destroyFreadComponentControlDescriptor( void );
static void           destroyFreadComponentSemaphores( void );
static void           getFreadCapabilities( void );
static tmErrorCode_t  lFreadCompFunc( Int                   inst,
                                      UInt32                flags,
                                      ptsaCompletionArgs_t  args );
static tmErrorCode_t  lFreadErrorFunc( Int              inst,

⌨️ 快捷键说明

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