📄 microavbrowser.c
字号:
/* *-------------------------------------------------------------------- * * COPYRIGHT (c) 2002-2004 INTEL CORPORATION. ALL RIGHTS * RESERVED. THIS PROGRAM IS FURNISHED UNDER LICENSE AND MAY * ONLY BE USED OR COPIED IN ACCORDANCE WITH THE TERMS OF THAT * LICENSE. NO PART OF THIS PROGRAM OR PUBLICATION MAY BE * REPRODUCED, TRANSMITTED, TRANSCRIBED, STORED IN A RETRIEVAL * SYSTEM, OR TRANSLATED INTO ANY LANGUAGE OR COMPUTER LANGUAGE * IN ANY FORM OR BY ANY MEANS, ELECTRONIC, MECHANICAL, MAGNETIC, * OPTICAL, CHEMICAL, MANUAL, OR OTHERWISE, WITHOUT THE PRIOR * WRITTEN PERMISSION OF INTEL CORPORATION. EXCEPT AS EXPRESSLY * GRANTED IN A LICENSE AGREEMENT, THIS PROGRAM IS FURNISHED "AS-IS" * WITH NO WARRANTY WHATSOEVER, INCLUDING IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON- * INFRINGEMENT. * *-------------------------------------------------------------------- * File Name: MicroAVBrowser.c * Author: Intel Corporation * */#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h>#ifdef WIN32#include <crtdbg.h>#include "WinSemaphore.h"#endif#ifdef _POSIX#include <signal.h>#include <time.h>#include <unistd.h>#include <pthread.h>#include <sys/select.h>#include <sys/time.h>#include <sys/types.h>#endif#include "ILibParsers.h"#include "CommandLineShell.h"/* #### Begin CARDEA code #### */#define ALLOW_OS_CODE#include "rmdef/rmdef.h"#include "rmupnp/rmlibwmdrmndupnp/include/ms_upnp.h"#include "intel_upnp.h"/* #### End CARDEA code #### */#ifdef _DEBUG#define DEBUGONLY(x) x#else#define DEBUGONLY(x)#endifvoid *BrowserChain;void *BrowserLTM;struct cl_chain { void (*PreSelect)(void* object,fd_set *readset, fd_set *writeset, fd_set *errorset, int* blocktime); void (*PostSelect)(void* object,int slct, fd_set *readset, fd_set *writeset, fd_set *errorset); void (*Destroy)(void* object);};#ifdef _POSIXstatic void* Run(void* arg){ CLShell_Run(); ILibStopChain(BrowserChain); return NULL;}#endif#ifdef WIN32// this is the run method for the shell threadDWORD WINAPI Run(LPVOID args){ CLShell_Run(); ILibStopChain(BrowserChain); return 0;}#endifstatic void cl_preselect(void* object,fd_set *readset, fd_set *writeset, fd_set *errorset, int* blocktime){ FD_SET(STDIN_FILENO, readset);}static void cl_postselect(void* object,int slct, fd_set *readset, fd_set *writeset, fd_set *errorset){ int status = 0; if ( FD_ISSET(STDIN_FILENO, readset) ){ status = CLShell_Run(); } if (status < 0) ILibStopChain(BrowserChain);}static void cl_destroy(void* object){ printf("destroying CLI\n"); intel_upnp_uninit();}int main(void){ struct cl_chain *command_line;#ifdef _POSIX pthread_t newThread;#endif#ifdef WIN32 _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_DELAY_FREE_MEM_DF | _CRTDBG_LEAK_CHECK_DF );#endif // Output for program identification.... printf("Media Browser Sample Application Client\r\n"); /* #### Begin CARDEA code #### */ RMSignalInit(NULL, NULL); if ( RMFAILED(intel_upnp_init()) ) { printf("Unable to initialize rmupnp layer\n"); return -1; } /* #### End CARDEA code #### */ BrowserChain = ILibCreateChain(); BrowserLTM = ILibCreateLifeTime(BrowserChain); CLShell_Init(BrowserChain); /* Add an object for command line */ command_line = (struct cl_chain *) malloc(sizeof(struct cl_chain)); command_line->PreSelect = cl_preselect; command_line->PostSelect = cl_postselect; command_line->Destroy = cl_destroy; ILibAddToChain(BrowserChain, (void *)command_line);#ifdef _POSIX /* pthread_create(&newThread, NULL, &Run, NULL); pthread_detach(newThread); */#endif#ifdef WIN32 // Start the user interface thread CreateThread(NULL,0,&Run,NULL,0,NULL);#endif // go into the event loop. This call will return when // it's time to shutdown the application ILibStartChain(BrowserChain); CLShell_Uninit(); return 0;}struct RMFileStreamInfo;// callback to pass stream information to the application, DRM protected, number of chapters, etcvoid RMFileStreamInfoCallback(struct RMFileStreamInfo *streamInfo){ // doing nothing}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -