1bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim/*
2bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim * Copyright 2012, The Android Open Source Project
3bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim *
4bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim * Licensed under the Apache License, Version 2.0 (the "License");
5bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim * you may not use this file except in compliance with the License.
6bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim * You may obtain a copy of the License at
7bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim *
8bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim *     http://www.apache.org/licenses/LICENSE-2.0
9bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim *
10bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim * Unless required by applicable law or agreed to in writing, software
11bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim * distributed under the License is distributed on an "AS IS" BASIS,
12bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim * See the License for the specific language governing permissions and
14bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim * limitations under the License.
15bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim */
16bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim
17bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim//#define LOG_NDEBUG 0
18bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim#define LOG_TAG "MediaCodecListWriter"
19bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim#include <utils/Log.h>
20bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim
21bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim#include <media/stagefright/foundation/AMessage.h>
22bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim#include <media/stagefright/MediaCodecListWriter.h>
23bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim#include <media/MediaCodecInfo.h>
24bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim
25bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kimnamespace android {
26bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim
27bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kimvoid MediaCodecListWriter::addGlobalSetting(
28bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim        const char* key, const char* value) {
29bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim    mGlobalSettings.emplace_back(key, value);
30bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim}
31bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim
32bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kimstd::unique_ptr<MediaCodecInfoWriter>
33bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim        MediaCodecListWriter::addMediaCodecInfo() {
34bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim    sp<MediaCodecInfo> info = new MediaCodecInfo();
35bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim    mCodecInfos.push_back(info);
36bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim    return std::unique_ptr<MediaCodecInfoWriter>(
37bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim            new MediaCodecInfoWriter(info.get()));
38bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim}
39bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim
40bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kimvoid MediaCodecListWriter::writeGlobalSettings(
41bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim        const sp<AMessage> &globalSettings) const {
42bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim    for (const std::pair<std::string, std::string> &kv : mGlobalSettings) {
43bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim        globalSettings->setString(kv.first.c_str(), kv.second.c_str());
44bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim    }
45bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim}
46bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim
47bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kimvoid MediaCodecListWriter::writeCodecInfos(
48bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim        std::vector<sp<MediaCodecInfo>> *codecInfos) const {
49bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim    for (const sp<MediaCodecInfo> &info : mCodecInfos) {
50bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim        codecInfos->push_back(info);
51bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim    }
52bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim}
53bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim
54bc3ad96efdfca9ceaa5ff31b27f7571b32903fdeWonsik Kim}  // namespace android
55