blob: f9f74f9bd5c381c3295b7f7f7b8d209c524acec7
1 | #ifndef MEDIA_DTSHD_MEDIASOURCE_H_ |
2 | #define MEDIA_DTSHD_MEDIASOURCE_H_ |
3 | |
4 | #include "MediaSource.h" |
5 | #include "DataSource.h" |
6 | #include "MediaBufferGroup.h" |
7 | #include "MetaData.h" |
8 | #include "audio_mediasource.h" |
9 | |
10 | namespace android |
11 | { |
12 | //for dtsexpress stream,sometimes vbuf is full and abuf has not 40k and cause block about 5s. |
13 | #define AML_DCA_INPUT_DATA_LEN_PTIME (10*1024) |
14 | #define AML_DCA_OMX_DECODER_NUMBUF 2 |
15 | #define AML_DCA_SW_CORE_16M 0x7ffe8001 |
16 | #define AML_DCA_SW_CORE_14M 0x1fffe800 |
17 | #define AML_DCA_SW_CORE_24M 0xfe80007f |
18 | #define AML_DCA_SW_CORE_16 0xfe7f0180 |
19 | #define AML_DCA_SW_CORE_14 0xff1f00e8 |
20 | #define AML_DCA_SW_CORE_24 0x80fe7f01 |
21 | #define AML_DCA_SW_SUBSTREAM_M 0x64582025 |
22 | #define AML_DCA_SW_SUBSTREAM 0x58642520 |
23 | |
24 | typedef int (*fp_read_buffer)(unsigned char *, int); |
25 | class Dtshd_MediaSource : public AudioMediaSource |
26 | { |
27 | public: |
28 | Dtshd_MediaSource(void *read_buffer); |
29 | |
30 | status_t start(MetaData *params = NULL); |
31 | status_t stop(); |
32 | sp<MetaData> getFormat(); |
33 | status_t read(MediaBuffer **buffer, const ReadOptions *options = NULL); |
34 | |
35 | int GetReadedBytes(); |
36 | int GetSampleRate(); |
37 | virtual int SetSampleRate(int samplerate); |
38 | int GetChNum(); |
39 | int* Get_pStop_ReadBuf_Flag(); |
40 | int Set_pStop_ReadBuf_Flag(int *pStop); |
41 | int MediaSourceRead_buffer(unsigned char *buffer, int size); |
42 | |
43 | fp_read_buffer fpread_buffer; |
44 | int sample_rate; |
45 | int ChNum; |
46 | int frame_size; |
47 | int FrameSizeDetectFlag; |
48 | unsigned char * FirFraBuf; |
49 | int FirFraBuf_Len; |
50 | int FirFraBuf_Offset; |
51 | int FrameNumReaded; |
52 | int *pStop_ReadBuf_Flag; |
53 | int64_t bytes_readed_sum_pre; |
54 | int64_t bytes_readed_sum; |
55 | protected: |
56 | virtual ~Dtshd_MediaSource(); |
57 | |
58 | private: |
59 | bool mStarted; |
60 | sp<DataSource> mDataSource; |
61 | sp<MetaData> mMeta; |
62 | MediaBufferGroup *mGroup; |
63 | int64_t mCurrentTimeUs; |
64 | int mBytesReaded; |
65 | int block_align; |
66 | Dtshd_MediaSource(const Dtshd_MediaSource &); |
67 | Dtshd_MediaSource &operator=(const Dtshd_MediaSource &); |
68 | }; |
69 | |
70 | |
71 | } |
72 | |
73 | #endif |
74 | |
75 |