OSDN Git Service

stagefright-plugins: Fix memory leak
[android-x86/external-stagefright-plugins.git] / utils / codec_utils.h
1 /*
2  * Copyright 2012 Michael Chen <omxcodec@gmail.com>
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef CODEC_UTILS_H_
18
19 #define CODEC_UTILS_H_
20
21 #include <unistd.h>
22 #include <stdlib.h>
23
24 #include <utils/Errors.h>
25 #include <media/stagefright/foundation/ABuffer.h>
26
27 #include "ffmpeg_utils.h"
28
29 namespace android {
30
31 //video
32 sp<MetaData> setAVCFormat(AVCodecContext *avctx);
33 sp<MetaData> setH264Format(AVCodecContext *avctx);
34 sp<MetaData> setMPEG4Format(AVCodecContext *avctx);
35 sp<MetaData> setH263Format(AVCodecContext *avctx);
36 sp<MetaData> setMPEG2VIDEOFormat(AVCodecContext *avctx);
37 sp<MetaData> setVC1Format(AVCodecContext *avctx);
38 sp<MetaData> setWMV1Format(AVCodecContext *avctx);
39 sp<MetaData> setWMV2Format(AVCodecContext *avctx);
40 sp<MetaData> setWMV3Format(AVCodecContext *avctx);
41 sp<MetaData> setRV20Format(AVCodecContext *avctx);
42 sp<MetaData> setRV30Format(AVCodecContext *avctx);
43 sp<MetaData> setRV40Format(AVCodecContext *avctx);
44 sp<MetaData> setFLV1Format(AVCodecContext *avctx);
45 sp<MetaData> setHEVCFormat(AVCodecContext *avctx);
46 sp<MetaData> setVP8Format(AVCodecContext *avctx);
47 sp<MetaData> setVP9Format(AVCodecContext *avctx);
48 //audio
49 sp<MetaData> setMP2Format(AVCodecContext *avctx);
50 sp<MetaData> setMP3Format(AVCodecContext *avctx);
51 sp<MetaData> setVORBISFormat(AVCodecContext *avctx);
52 sp<MetaData> setAC3Format(AVCodecContext *avctx);
53 sp<MetaData> setAACFormat(AVCodecContext *avctx);
54 sp<MetaData> setWMAV1Format(AVCodecContext *avctx);
55 sp<MetaData> setWMAV2Format(AVCodecContext *avctx);
56 sp<MetaData> setWMAProFormat(AVCodecContext *avctx);
57 sp<MetaData> setWMALossLessFormat(AVCodecContext *avctx);
58 sp<MetaData> setRAFormat(AVCodecContext *avctx);
59 sp<MetaData> setAPEFormat(AVCodecContext *avctx);
60 sp<MetaData> setDTSFormat(AVCodecContext *avctx);
61 sp<MetaData> setFLACFormat(AVCodecContext *avctx);
62
63 //Convert H.264 NAL format to annex b
64 status_t convertNal2AnnexB(uint8_t *dst, size_t dst_size,
65         uint8_t *src, size_t src_size, size_t nal_len_size);
66
67 int getDivXVersion(AVCodecContext *avctx);
68
69 status_t parseMetadataTags(AVFormatContext *ctx, const sp<MetaData> &meta);
70
71 }  // namespace android
72
73 #endif  // CODEC_UTILS_H_