SmartAudio/package/allwinner/tina_multimedia/libcedarx/demo/demoAdecoder/demo_utils.h

127 lines
3.0 KiB
C
Executable File

/*
* Copyright (c) 2008-2017 Allwinner Technology Co. Ltd.
* All rights reserved.
*
* File : demo_utils.h
* Description : demoAdecoder
* History :
*
*/
#ifndef DEMO_UTILS_H
#define DEMO_UTILS_H
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <pthread.h>
#include "cdx_config.h"
#include "CdxParser.h"
#include "adecoder.h"
#include <iniparserapi.h>
#include "tinyplaydemo.h"
#define DEMO_VERSION "VERSION 1.0"
#define DEMO_WRITER "KHAN"
#define DEMO_OWNER "AllwinnerTech.Lto"
#define DEMO_SAFE_OPEN_FILE(file, dir, mode, name) if(file == NULL) { \
file = fopen(dir, mode); \
if(file == NULL) { \
demo_loge("open %s fail!!", name); \
} \
else \
{ \
demo_logd("open %s success", name); \
} \
}
#define DEMO_SAFE_WRITE_FILE(buf, blksz, blknum, file) if(file != NULL) {\
fwrite(buf, blksz, blknum, file); \
}
#define DEMO_SAFE_READ_FILE(buf, blksz, blknum, file) if(file != NULL) {\
fread(buf, blksz, blknum, file); \
}
#define DEMO_SAFE_CLOSE_FILE(file, name) if(file != NULL) {\
fclose(file); \
demo_logd("Demo capture file %s(%p) has closed ...", name, file); \
file = NULL; \
}
#define DEMO_SAFE_FREE(ptr, name, print) \
if(ptr){\
free(ptr);\
if(print){ \
demo_logd("Demo ptr %s(%p) safely freed ...", name, ptr);\
} \
ptr = NULL;\
}
#define DEMO_VERBOS_SAFE_MALLOC(ptr, len, action_when_fail) \
ptr = malloc(len); \
if(ptr == NULL){ \
action_when_fail \
} \
memset(ptr, 0x00, len);
#define demo_print(fmt, arg...) fprintf(stderr, fmt"\n", ##arg)
#define demo_logi(fmt, arg...) if(DEMO_DEBUG >= 0) \
fprintf(stderr, "%s, line(%d), info:"fmt"\n", LOG_TAG, __LINE__, ##arg)
#define demo_loge(fmt, arg...) if(DEMO_DEBUG >= 1) \
fprintf(stderr, "%s, line(%d), error:"fmt"\n", LOG_TAG, __LINE__, ##arg)
#define demo_logd(fmt, arg...) if(DEMO_DEBUG >= 2) \
fprintf(stderr, "%s, line(%d), debug:"fmt"\n", LOG_TAG, __LINE__, ##arg)
#define demo_logw(fmt, arg...) if(DEMO_DEBUG >= 3) \
fprintf(stderr, "%s, line(%d), warning:"fmt"\n", LOG_TAG, __LINE__, ##arg)
#define demo_logv(fmt, arg...) if(DEMO_DEBUG >= 4) \
fprintf(stderr, "%s, line(%d), verbose:"fmt"\n", LOG_TAG, __LINE__, ##arg)
typedef struct MultiThreadCtx
{
pthread_rwlock_t rwrock;
int nEndofStream;
int loop;
int state;
}MultiThreadCtx;
typedef struct AUDIOSTREAMDATAINFO
{
char* pData;
int nLength;
int64_t nPts;
int64_t nPcr;
int bIsFirstPart;
int bIsLastPart;
}AudioStreamDataInfo;
typedef struct DecDemo
{
AudioDecoder *pAudioDec;
CdxParserT *parser;
AudioDsp* dsp;
CdxDataSourceT source;
CdxMediaInfoT mediaInfo;
BsInFor bsInfo;
AudioStreamInfo AudioInfo;
CdxPlaybkCfg cfg;
MultiThreadCtx thread;
long long totalTime;
long long DurationTime;
char *pInputFile;
char *pOutputDir;
char file_base_name[256];
pthread_mutex_t parserMutex;
}DecDemo;
#endif