FFmpeg
libavcodec
codec2utils.c
Go to the documentation of this file.
1
/*
2
* codec2 utility functions
3
* Copyright (c) 2017 Tomas Härdin
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
#include <string.h>
23
#include "
internal.h
"
24
#include "
libavcodec/codec2utils.h
"
25
26
#if LIBAVCODEC_VERSION_MAJOR < 59
27
int
avpriv_codec2_mode_bit_rate
(
void
*logctx,
int
mode
)
28
{
29
int
frame_size
=
avpriv_codec2_mode_frame_size
(logctx,
mode
);
30
int
block_align =
avpriv_codec2_mode_block_align
(logctx,
mode
);
31
32
if
(
frame_size
<= 0 || block_align <= 0) {
33
return
0;
34
}
35
36
return
8 * 8000 * block_align /
frame_size
;
37
}
38
39
int
avpriv_codec2_mode_frame_size
(
void
*logctx,
int
mode
)
40
{
41
int
frame_size_table[
CODEC2_MODE_MAX
+1] = {
42
160,
// 3200
43
160,
// 2400
44
320,
// 1600
45
320,
// 1400
46
320,
// 1300
47
320,
// 1200
48
320,
// 700
49
320,
// 700B
50
320,
// 700C
51
};
52
53
if
(
mode < 0 || mode >
CODEC2_MODE_MAX
) {
54
av_log
(logctx,
AV_LOG_ERROR
,
"unknown codec2 mode %i, can't find frame_size\n"
,
mode
);
55
return
0;
56
}
else
{
57
return
frame_size_table[
mode
];
58
}
59
}
60
61
int
avpriv_codec2_mode_block_align
(
void
*logctx,
int
mode
)
62
{
63
int
block_align_table[
CODEC2_MODE_MAX
+1] = {
64
8,
// 3200
65
6,
// 2400
66
8,
// 1600
67
7,
// 1400
68
7,
// 1300
69
6,
// 1200
70
4,
// 700
71
4,
// 700B
72
4,
// 700C
73
};
74
75
if
(
mode < 0 || mode >
CODEC2_MODE_MAX
) {
76
av_log
(logctx,
AV_LOG_ERROR
,
"unknown codec2 mode %i, can't find block_align\n"
,
mode
);
77
return
0;
78
}
else
{
79
return
block_align_table[
mode
];
80
}
81
}
82
#endif
internal.h
avpriv_codec2_mode_frame_size
int avpriv_codec2_mode_frame_size(void *logctx, int mode)
Definition:
codec2utils.c:39
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition:
log.h:194
CODEC2_MODE_MAX
#define CODEC2_MODE_MAX
Definition:
codec2utils.h:32
frame_size
int frame_size
Definition:
mxfenc.c:2206
codec2utils.h
avpriv_codec2_mode_block_align
int avpriv_codec2_mode_block_align(void *logctx, int mode)
Definition:
codec2utils.c:61
avpriv_codec2_mode_bit_rate
int avpriv_codec2_mode_bit_rate(void *logctx, int mode)
Definition:
codec2utils.c:27
mode
mode
Definition:
ebur128.h:83
av_log
#define av_log(a,...)
Definition:
tableprint_vlc.h:28
Generated on Wed Aug 24 2022 21:33:50 for FFmpeg by
1.8.17