1eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang /*
2eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang * Copyright (C) 2011 The Android Open Source Project
3eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang *
4eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang * Licensed under the Apache License, Version 2.0 (the "License");
5eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang * you may not use this file except in compliance with the License.
6eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang * You may obtain a copy of the License at
7eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang *
8eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang *      http://www.apache.org/licenses/LICENSE-2.0
9eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang *
10eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang * Unless required by applicable law or agreed to in writing, software
11eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang * distributed under the License is distributed on an "AS IS" BASIS,
12eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang * See the License for the specific language governing permissions and
14eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang * limitations under the License.
15eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang */
16eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
17eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang#ifndef TEXT_DESCRIPTIONS_H_
18eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
19eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang#define TEXT_DESCRIPTIONS_H_
20eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
21eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang#include <binder/Parcel.h>
22eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang#include <media/stagefright/foundation/ABase.h>
23eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
24eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wangnamespace android {
25eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
26eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wangclass TextDescriptions {
27eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wangpublic:
28eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang    enum {
29eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        IN_BAND_TEXT_3GPP             = 0x01,
30eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        OUT_OF_BAND_TEXT_SRT          = 0x02,
31eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
32eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        GLOBAL_DESCRIPTIONS           = 0x100,
33eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        LOCAL_DESCRIPTIONS            = 0x200,
34eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang    };
35eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
36eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang    static status_t getParcelOfDescriptions(
37eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang            const uint8_t *data, ssize_t size,
38eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang            uint32_t flags, int timeMs, Parcel *parcel);
39eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wangprivate:
40eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang    TextDescriptions();
41eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
42eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang    enum {
43eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        // These keys must be in sync with the keys in TimedText.java
44eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_DISPLAY_FLAGS                 = 1, // int
45eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_STYLE_FLAGS                   = 2, // int
46eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_BACKGROUND_COLOR_RGBA         = 3, // int
47eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_HIGHLIGHT_COLOR_RGBA          = 4, // int
48eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_SCROLL_DELAY                  = 5, // int
49eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_WRAP_TEXT                     = 6, // int
50eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_START_TIME                    = 7, // int
51eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_STRUCT_BLINKING_TEXT_LIST     = 8, // List<CharPos>
52eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_STRUCT_FONT_LIST              = 9, // List<Font>
53eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_STRUCT_HIGHLIGHT_LIST         = 10, // List<CharPos>
54eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_STRUCT_HYPER_TEXT_LIST        = 11, // List<HyperText>
55eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_STRUCT_KARAOKE_LIST           = 12, // List<Karaoke>
56eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_STRUCT_STYLE_LIST             = 13, // List<Style>
57eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_STRUCT_TEXT_POS               = 14, // TextPos
58eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_STRUCT_JUSTIFICATION          = 15, // Justification
59eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_STRUCT_TEXT                   = 16, // Text
60eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
61eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_GLOBAL_SETTING                = 101,
62eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_LOCAL_SETTING                 = 102,
63eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_START_CHAR                    = 103,
64eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_END_CHAR                      = 104,
65eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_FONT_ID                       = 105,
66eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_FONT_SIZE                     = 106,
67eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang        KEY_TEXT_COLOR_RGBA               = 107,
68eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang    };
69eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
70eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang    static status_t extractSRTLocalDescriptions(
71eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang            const uint8_t *data, ssize_t size,
72eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang            int timeMs, Parcel *parcel);
73eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang    static status_t extract3GPPGlobalDescriptions(
74eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang            const uint8_t *data, ssize_t size,
75eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang            Parcel *parcel, int depth);
76eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang    static status_t extract3GPPLocalDescriptions(
77eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang            const uint8_t *data, ssize_t size,
78eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang            int timeMs, Parcel *parcel, int depth);
79eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
80eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang    DISALLOW_EVIL_CONSTRUCTORS(TextDescriptions);
81eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang};
82eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang
83eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang}  // namespace android
84eaa5d8f9c0117bdaa20fd0a57921156bb0c06345Gloria Wang#endif  // TEXT_DESCRIPTIONS_H_
85