FFmpeg
libavcodec
dnxhddata.h
Go to the documentation of this file.
1
/*
2
* VC3/DNxHD decoder.
3
* Copyright (c) 2007 SmartJog S.A., Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
#ifndef AVCODEC_DNXHDDATA_H
23
#define AVCODEC_DNXHDDATA_H
24
25
#include <stdint.h>
26
#include "
avcodec.h
"
27
#include "
libavutil/internal.h
"
28
#include "
libavutil/intreadwrite.h
"
29
30
/** Additional profile info flags */
31
#define DNXHD_INTERLACED (1<<0)
32
#define DNXHD_MBAFF (1<<1)
33
#define DNXHD_444 (1<<2)
34
35
/** Frame headers, extra 0x00 added to end for parser */
36
#define DNXHD_HEADER_INITIAL 0x000002800100
37
#define DNXHD_HEADER_444 0x000002800200
38
39
/** Indicate that a CIDEntry value must be read in the bitstream */
40
#define DNXHD_VARIABLE 0
41
42
typedef
struct
CIDEntry
{
43
int
cid
;
44
unsigned
int
width
,
height
;
45
unsigned
int
frame_size
;
46
unsigned
int
coding_unit_size
;
47
uint16_t
flags
;
48
int
index_bits
;
49
int
bit_depth
;
50
int
eob_index
;
51
const
uint8_t
*
luma_weight
, *
chroma_weight
;
52
const
uint8_t
*
dc_codes
, *
dc_bits
;
53
const
uint16_t *
ac_codes
;
54
const
uint8_t
*
ac_bits
, *
ac_info
;
55
const
uint16_t *
run_codes
;
56
const
uint8_t
*
run_bits
, *
run
;
57
int
bit_rates
[5];
///< Helper to choose variants, rounded to nearest 5Mb/s
58
AVRational
packet_scale
;
59
}
CIDEntry
;
60
61
extern
const
CIDEntry
ff_dnxhd_cid_table
[];
62
63
int
ff_dnxhd_get_cid_table
(
int
cid
);
64
int
ff_dnxhd_find_cid
(
AVCodecContext
*avctx,
int
bit_depth
);
65
void
ff_dnxhd_print_profiles
(
AVCodecContext
*avctx,
int
loglevel);
66
67
static
av_always_inline
uint64_t
ff_dnxhd_check_header_prefix_hr
(uint64_t prefix)
68
{
69
uint64_t data_offset = prefix >> 16;
70
if
((prefix & 0xFFFF0000FFFFLL) == 0x0300 &&
71
data_offset >= 0x0280 && data_offset <= 0x2170 &&
72
(data_offset & 3) == 0)
73
return
prefix;
74
return
0;
75
}
76
77
static
av_always_inline
uint64_t
ff_dnxhd_check_header_prefix
(uint64_t prefix)
78
{
79
if
(prefix ==
DNXHD_HEADER_INITIAL
||
80
prefix ==
DNXHD_HEADER_444
||
81
ff_dnxhd_check_header_prefix_hr
(prefix))
82
return
prefix;
83
return
0;
84
}
85
86
static
av_always_inline
uint64_t
ff_dnxhd_parse_header_prefix
(
const
uint8_t
*
buf
)
87
{
88
uint64_t prefix =
AV_RB32
(
buf
);
89
prefix = (prefix << 16) |
buf
[4] << 8;
90
return
ff_dnxhd_check_header_prefix
(prefix);
91
}
92
93
int
avpriv_dnxhd_get_frame_size
(
int
cid
);
94
int
avpriv_dnxhd_get_hr_frame_size
(
int
cid
,
int
w
,
int
h
);
95
int
avpriv_dnxhd_get_interlaced
(
int
cid
);
96
97
#endif
/* AVCODEC_DNXHDDATA_H */
bit_depth
static void bit_depth(AudioStatsContext *s, uint64_t mask, uint64_t imask, AVRational *depth)
Definition:
af_astats.c:226
ff_dnxhd_check_header_prefix_hr
static av_always_inline uint64_t ff_dnxhd_check_header_prefix_hr(uint64_t prefix)
Definition:
dnxhddata.h:67
ff_dnxhd_print_profiles
void ff_dnxhd_print_profiles(AVCodecContext *avctx, int loglevel)
Definition:
dnxhddata.c:1163
w
uint8_t w
Definition:
llviddspenc.c:38
DNXHD_HEADER_INITIAL
#define DNXHD_HEADER_INITIAL
Frame headers, extra 0x00 added to end for parser.
Definition:
dnxhddata.h:36
CIDEntry::run_bits
const uint8_t * run_bits
Definition:
dnxhddata.h:56
CIDEntry::coding_unit_size
unsigned int coding_unit_size
Definition:
dnxhddata.h:46
CIDEntry::bit_rates
int bit_rates[5]
Helper to choose variants, rounded to nearest 5Mb/s.
Definition:
dnxhddata.h:57
CIDEntry::ac_info
const uint8_t * ac_info
Definition:
dnxhddata.h:54
avpriv_dnxhd_get_hr_frame_size
int avpriv_dnxhd_get_hr_frame_size(int cid, int w, int h)
Definition:
dnxhddata.c:1095
CIDEntry::cid
int cid
Definition:
dnxhddata.h:43
CIDEntry::packet_scale
AVRational packet_scale
Definition:
dnxhddata.h:58
CIDEntry
Definition:
dnxhddata.h:42
CIDEntry::flags
uint16_t flags
Definition:
dnxhddata.h:47
CIDEntry::bit_depth
int bit_depth
Definition:
dnxhddata.h:49
buf
void * buf
Definition:
avisynth_c.h:766
intreadwrite.h
ff_dnxhd_cid_table
const CIDEntry ff_dnxhd_cid_table[]
Definition:
dnxhddata.c:935
CIDEntry::eob_index
int eob_index
Definition:
dnxhddata.h:50
CIDEntry::luma_weight
const uint8_t * luma_weight
Definition:
dnxhddata.h:51
CIDEntry::run_codes
const uint16_t * run_codes
Definition:
dnxhddata.h:55
CIDEntry::height
unsigned int height
Definition:
dnxhddata.h:44
AVRational
Rational number (pair of numerator and denominator).
Definition:
rational.h:58
CIDEntry::width
unsigned int width
Definition:
dnxhddata.h:44
CIDEntry::index_bits
int index_bits
Definition:
dnxhddata.h:48
DNXHD_HEADER_444
#define DNXHD_HEADER_444
Definition:
dnxhddata.h:37
cid
int cid
Definition:
mxfenc.c:2072
CIDEntry::dc_codes
const uint8_t * dc_codes
Definition:
dnxhddata.h:52
CIDEntry::chroma_weight
const uint8_t * chroma_weight
Definition:
dnxhddata.h:51
AV_RB32
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_RB32
Definition:
bytestream.h:92
avpriv_dnxhd_get_interlaced
int avpriv_dnxhd_get_interlaced(int cid)
Definition:
dnxhddata.c:1108
ff_dnxhd_get_cid_table
int ff_dnxhd_get_cid_table(int cid)
Definition:
dnxhddata.c:1078
CIDEntry::run
const uint8_t * run
Definition:
dnxhddata.h:56
CIDEntry::ac_bits
const uint8_t * ac_bits
Definition:
dnxhddata.h:54
CIDEntry::ac_codes
const uint16_t * ac_codes
Definition:
dnxhddata.h:53
ff_dnxhd_find_cid
int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
Definition:
dnxhddata.c:1133
internal.h
ff_dnxhd_check_header_prefix
static av_always_inline uint64_t ff_dnxhd_check_header_prefix(uint64_t prefix)
Definition:
dnxhddata.h:77
av_always_inline
#define av_always_inline
Definition:
attributes.h:43
uint8_t
uint8_t
Definition:
audio_convert.c:194
CIDEntry::dc_bits
const uint8_t * dc_bits
Definition:
dnxhddata.h:52
avcodec.h
ff_dnxhd_parse_header_prefix
static av_always_inline uint64_t ff_dnxhd_parse_header_prefix(const uint8_t *buf)
Definition:
dnxhddata.h:86
AVCodecContext
main external API structure.
Definition:
avcodec.h:1565
avpriv_dnxhd_get_frame_size
int avpriv_dnxhd_get_frame_size(int cid)
Definition:
dnxhddata.c:1087
CIDEntry::frame_size
unsigned int frame_size
Definition:
dnxhddata.h:45
h
h
Definition:
vp9dsp_template.c:2038
Generated on Wed Aug 24 2022 21:26:38 for FFmpeg by
1.8.17