1cabdff1aSopenharmony_ci/*
2cabdff1aSopenharmony_ci *  AVS3 related definitions
3cabdff1aSopenharmony_ci *
4cabdff1aSopenharmony_ci * Copyright (C) 2020 Huiwen Ren, <hwrenx@gmail.com>
5cabdff1aSopenharmony_ci *
6cabdff1aSopenharmony_ci * This file is part of FFmpeg.
7cabdff1aSopenharmony_ci *
8cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or
9cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public
10cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either
11cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version.
12cabdff1aSopenharmony_ci *
13cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful,
14cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of
15cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16cabdff1aSopenharmony_ci * Lesser General Public License for more details.
17cabdff1aSopenharmony_ci *
18cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public
19cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software
20cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21cabdff1aSopenharmony_ci */
22cabdff1aSopenharmony_ci
23cabdff1aSopenharmony_ci#ifndef AVCODEC_AVS3_H
24cabdff1aSopenharmony_ci#define AVCODEC_AVS3_H
25cabdff1aSopenharmony_ci
26cabdff1aSopenharmony_ci#define AVS3_NAL_START_CODE          0x010000
27cabdff1aSopenharmony_ci#define AVS3_SEQ_START_CODE          0xB0
28cabdff1aSopenharmony_ci#define AVS3_SEQ_END_CODE            0xB1
29cabdff1aSopenharmony_ci#define AVS3_USER_DATA_START_CODE    0xB2
30cabdff1aSopenharmony_ci#define AVS3_INTRA_PIC_START_CODE    0xB3
31cabdff1aSopenharmony_ci#define AVS3_UNDEF_START_CODE        0xB4
32cabdff1aSopenharmony_ci#define AVS3_EXTENSION_START_CODE    0xB5
33cabdff1aSopenharmony_ci#define AVS3_INTER_PIC_START_CODE    0xB6
34cabdff1aSopenharmony_ci#define AVS3_VIDEO_EDIT_CODE         0xB7
35cabdff1aSopenharmony_ci#define AVS3_FIRST_SLICE_START_CODE  0x00
36cabdff1aSopenharmony_ci#define AVS3_PROFILE_BASELINE_MAIN   0x20
37cabdff1aSopenharmony_ci#define AVS3_PROFILE_BASELINE_MAIN10 0x22
38cabdff1aSopenharmony_ci
39cabdff1aSopenharmony_ci#define AVS3_ISPIC(x) ((x) == AVS3_INTRA_PIC_START_CODE || (x) == AVS3_INTER_PIC_START_CODE)
40cabdff1aSopenharmony_ci#define AVS3_ISUNIT(x) ((x) == AVS3_SEQ_START_CODE || AVS3_ISPIC(x))
41cabdff1aSopenharmony_ci
42cabdff1aSopenharmony_ci#include "libavutil/avutil.h"
43cabdff1aSopenharmony_ci#include "libavutil/pixfmt.h"
44cabdff1aSopenharmony_ci#include "libavutil/rational.h"
45cabdff1aSopenharmony_ci
46cabdff1aSopenharmony_cistatic const AVRational ff_avs3_frame_rate_tab[16] = {
47cabdff1aSopenharmony_ci    { 0    , 0   }, // forbid
48cabdff1aSopenharmony_ci    { 24000, 1001},
49cabdff1aSopenharmony_ci    { 24   , 1   },
50cabdff1aSopenharmony_ci    { 25   , 1   },
51cabdff1aSopenharmony_ci    { 30000, 1001},
52cabdff1aSopenharmony_ci    { 30   , 1   },
53cabdff1aSopenharmony_ci    { 50   , 1   },
54cabdff1aSopenharmony_ci    { 60000, 1001},
55cabdff1aSopenharmony_ci    { 60   , 1   },
56cabdff1aSopenharmony_ci    { 100  , 1   },
57cabdff1aSopenharmony_ci    { 120  , 1   },
58cabdff1aSopenharmony_ci    { 200  , 1   },
59cabdff1aSopenharmony_ci    { 240  , 1   },
60cabdff1aSopenharmony_ci    { 300  , 1   },
61cabdff1aSopenharmony_ci    { 0    , 0   }, // reserved
62cabdff1aSopenharmony_ci    { 0    , 0   }  // reserved
63cabdff1aSopenharmony_ci};
64cabdff1aSopenharmony_ci
65cabdff1aSopenharmony_cistatic const int ff_avs3_color_primaries_tab[10] = {
66cabdff1aSopenharmony_ci    AVCOL_PRI_RESERVED0   ,    // 0
67cabdff1aSopenharmony_ci    AVCOL_PRI_BT709       ,    // 1
68cabdff1aSopenharmony_ci    AVCOL_PRI_UNSPECIFIED ,    // 2
69cabdff1aSopenharmony_ci    AVCOL_PRI_RESERVED    ,    // 3
70cabdff1aSopenharmony_ci    AVCOL_PRI_BT470M      ,    // 4
71cabdff1aSopenharmony_ci    AVCOL_PRI_BT470BG     ,    // 5
72cabdff1aSopenharmony_ci    AVCOL_PRI_SMPTE170M   ,    // 6
73cabdff1aSopenharmony_ci    AVCOL_PRI_SMPTE240M   ,    // 7
74cabdff1aSopenharmony_ci    AVCOL_PRI_FILM        ,    // 8
75cabdff1aSopenharmony_ci    AVCOL_PRI_BT2020           // 9
76cabdff1aSopenharmony_ci};
77cabdff1aSopenharmony_ci
78cabdff1aSopenharmony_cistatic const int ff_avs3_color_transfer_tab[15] = {
79cabdff1aSopenharmony_ci    AVCOL_TRC_RESERVED0    , // 0
80cabdff1aSopenharmony_ci    AVCOL_TRC_BT709        , // 1
81cabdff1aSopenharmony_ci    AVCOL_TRC_UNSPECIFIED  , // 2
82cabdff1aSopenharmony_ci    AVCOL_TRC_RESERVED     , // 3
83cabdff1aSopenharmony_ci    AVCOL_TRC_GAMMA22      , // 4
84cabdff1aSopenharmony_ci    AVCOL_TRC_GAMMA28      , // 5
85cabdff1aSopenharmony_ci    AVCOL_TRC_SMPTE170M    , // 6
86cabdff1aSopenharmony_ci    AVCOL_TRC_SMPTE240M    , // 7
87cabdff1aSopenharmony_ci    AVCOL_TRC_LINEAR       , // 8
88cabdff1aSopenharmony_ci    AVCOL_TRC_LOG          , // 9
89cabdff1aSopenharmony_ci    AVCOL_TRC_LOG_SQRT     , // 10
90cabdff1aSopenharmony_ci    AVCOL_TRC_BT2020_12    , // 11
91cabdff1aSopenharmony_ci    AVCOL_TRC_SMPTE2084    , // 12
92cabdff1aSopenharmony_ci    AVCOL_TRC_UNSPECIFIED  , // 13
93cabdff1aSopenharmony_ci    AVCOL_TRC_ARIB_STD_B67   // 14
94cabdff1aSopenharmony_ci};
95cabdff1aSopenharmony_ci
96cabdff1aSopenharmony_cistatic const int ff_avs3_color_matrix_tab[12] = {
97cabdff1aSopenharmony_ci    AVCOL_SPC_RESERVED     , // 0
98cabdff1aSopenharmony_ci    AVCOL_SPC_BT709        , // 1
99cabdff1aSopenharmony_ci    AVCOL_SPC_UNSPECIFIED  , // 2
100cabdff1aSopenharmony_ci    AVCOL_SPC_RESERVED     , // 3
101cabdff1aSopenharmony_ci    AVCOL_SPC_FCC          , // 4
102cabdff1aSopenharmony_ci    AVCOL_SPC_BT470BG      , // 5
103cabdff1aSopenharmony_ci    AVCOL_SPC_SMPTE170M    , // 6
104cabdff1aSopenharmony_ci    AVCOL_SPC_SMPTE240M    , // 7
105cabdff1aSopenharmony_ci    AVCOL_SPC_BT2020_NCL   , // 8
106cabdff1aSopenharmony_ci    AVCOL_SPC_BT2020_CL    , // 9
107cabdff1aSopenharmony_ci    AVCOL_SPC_UNSPECIFIED  , // 10
108cabdff1aSopenharmony_ci    AVCOL_SPC_UNSPECIFIED    // 11
109cabdff1aSopenharmony_ci};
110cabdff1aSopenharmony_ci
111cabdff1aSopenharmony_cistatic const enum AVPictureType ff_avs3_image_type[4] = {
112cabdff1aSopenharmony_ci    AV_PICTURE_TYPE_NONE,
113cabdff1aSopenharmony_ci    AV_PICTURE_TYPE_I,
114cabdff1aSopenharmony_ci    AV_PICTURE_TYPE_P,
115cabdff1aSopenharmony_ci    AV_PICTURE_TYPE_B
116cabdff1aSopenharmony_ci};
117cabdff1aSopenharmony_ci
118cabdff1aSopenharmony_ci#endif /* AVCODEC_AVS3_H */
119