blob: 1de9db492c9aa5288120848ab5a43566d48f6c26
1 | #ifndef MEDIA_ASF_MEDIASOURCE_H_ |
2 | #define MEDIA_ASF_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 | #include "../audio-dec.h" |
10 | |
11 | namespace android |
12 | { |
13 | |
14 | typedef int (*fp_read_buffer)(unsigned char *, int); |
15 | |
16 | //should corespond to the CodecID defined in <amffmpeg/libavcodec/avcodec.h> |
17 | enum { |
18 | CODEC_ID_MP2 = 0x15000, |
19 | CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 |
20 | CODEC_ID_AAC, |
21 | CODEC_ID_AC3, |
22 | CODEC_ID_DTS, |
23 | CODEC_ID_VORBIS, |
24 | CODEC_ID_DVAUDIO, |
25 | CODEC_ID_WMAV1, |
26 | CODEC_ID_WMAV2, |
27 | CODEC_ID_MACE3, |
28 | CODEC_ID_MACE6, |
29 | CODEC_ID_VMDAUDIO, |
30 | CODEC_ID_FLAC, |
31 | CODEC_ID_MP3ADU, |
32 | CODEC_ID_MP3ON4, |
33 | CODEC_ID_SHORTEN, |
34 | CODEC_ID_ALAC, |
35 | CODEC_ID_WESTWOOD_SND1, |
36 | CODEC_ID_GSM, ///< as in Berlin toast format |
37 | CODEC_ID_QDM2, |
38 | CODEC_ID_COOK, |
39 | CODEC_ID_TRUESPEECH, |
40 | CODEC_ID_TTA, |
41 | CODEC_ID_SMACKAUDIO, |
42 | CODEC_ID_QCELP, |
43 | CODEC_ID_WAVPACK, |
44 | CODEC_ID_DSICINAUDIO, |
45 | CODEC_ID_IMC, |
46 | CODEC_ID_MUSEPACK7, |
47 | CODEC_ID_MLP, |
48 | CODEC_ID_GSM_MS, /* as found in WAV */ |
49 | CODEC_ID_ATRAC3, |
50 | CODEC_ID_VOXWARE, |
51 | CODEC_ID_APE, |
52 | CODEC_ID_NELLYMOSER, |
53 | CODEC_ID_MUSEPACK8, |
54 | CODEC_ID_SPEEX, |
55 | CODEC_ID_WMAVOICE, |
56 | CODEC_ID_WMAPRO, |
57 | CODEC_ID_WMALOSSLESS, |
58 | CODEC_ID_ATRAC3P, |
59 | CODEC_ID_EAC3, |
60 | CODEC_ID_SIPR, |
61 | CODEC_ID_MP1, |
62 | CODEC_ID_TWINVQ, |
63 | CODEC_ID_TRUEHD, |
64 | CODEC_ID_MP4ALS, |
65 | CODEC_ID_ATRAC1, |
66 | CODEC_ID_BINKAUDIO_RDFT, |
67 | CODEC_ID_BINKAUDIO_DCT, |
68 | CODEC_ID_AAC_LATM, |
69 | CODEC_ID_QDMC, |
70 | CODEC_ID_CELT, |
71 | }; |
72 | |
73 | #define CODEC_ID_WMAV1_OMX 0x160 |
74 | #define CODEC_ID_WMAV2_OMX 0x161 |
75 | #define CODEC_ID_WMAPRO_OMX |
76 | |
77 | |
78 | |
79 | |
80 | class Asf_MediaSource : public AudioMediaSource |
81 | { |
82 | public: |
83 | Asf_MediaSource(void *read_buffer, aml_audio_dec_t *audec); |
84 | |
85 | status_t start(MetaData *params = NULL); |
86 | status_t stop(); |
87 | sp<MetaData> getFormat(); |
88 | status_t read(MediaBuffer **buffer, const ReadOptions *options = NULL); |
89 | |
90 | int GetReadedBytes(); |
91 | int GetSampleRate(); |
92 | int GetChNum(); |
93 | int* Get_pStop_ReadBuf_Flag(); |
94 | int Set_pStop_ReadBuf_Flag(int *pStop); |
95 | |
96 | int set_Asf_MetaData(aml_audio_dec_t *audec); |
97 | int MediaSourceRead_buffer(unsigned char *buffer, int size); |
98 | |
99 | fp_read_buffer fpread_buffer; |
100 | |
101 | int sample_rate; |
102 | int ChNum; |
103 | int frame_size; |
104 | int *pStop_ReadBuf_Flag; |
105 | int extradata_size; |
106 | int64_t bytes_readed_sum_pre; |
107 | int64_t bytes_readed_sum; |
108 | protected: |
109 | virtual ~Asf_MediaSource(); |
110 | |
111 | private: |
112 | bool mStarted; |
113 | sp<DataSource> mDataSource; |
114 | sp<MetaData> mMeta; |
115 | MediaBufferGroup *mGroup; |
116 | int64_t mCurrentTimeUs; |
117 | int mBytesReaded; |
118 | int block_align; |
119 | Asf_MediaSource(const Asf_MediaSource &); |
120 | Asf_MediaSource &operator=(const Asf_MediaSource &); |
121 | }; |
122 | |
123 | |
124 | } |
125 | |
126 | #endif |
127 | |
128 |