Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
c8f0e88b
Commit
c8f0e88b
authored
Nov 30, 2011
by
Martin Storsjö
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rtpdec: Templatize the code for different g726 bitrate variants
Signed-off-by:
Martin Storsjö
<
martin@martin.st
>
parent
bb8a6e03
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
77 deletions
+23
-77
rtpdec_g726.c
libavformat/rtpdec_g726.c
+23
-77
No files found.
libavformat/rtpdec_g726.c
View file @
c8f0e88b
...
...
@@ -21,82 +21,28 @@
#include "avformat.h"
#include "rtpdec_formats.h"
static
int
g726_16_init
(
AVFormatContext
*
s
,
int
st_index
,
PayloadContext
*
data
)
{
AVStream
*
stream
=
s
->
streams
[
st_index
];
AVCodecContext
*
codec
=
stream
->
codec
;
codec
->
bit_rate
=
16000
;
if
(
codec
->
sample_rate
)
codec
->
bits_per_coded_sample
=
av_clip
((
codec
->
bit_rate
+
codec
->
sample_rate
/
2
)
/
codec
->
sample_rate
,
2
,
5
);
return
0
;
#define RTP_G726_HANDLER(bitrate) \
static int g726_ ## bitrate ##_init(AVFormatContext *s, int st_index, PayloadContext *data) \
{ \
AVStream *stream = s->streams[st_index]; \
AVCodecContext *codec = stream->codec; \
\
codec->bit_rate = bitrate*1000; \
if (codec->sample_rate) \
codec->bits_per_coded_sample = \
av_clip((codec->bit_rate + codec->sample_rate/2) / codec->sample_rate, 2, 5); \
\
return 0; \
} \
\
RTPDynamicProtocolHandler ff_g726_ ## bitrate ## _dynamic_handler = { \
.enc_name = "G726-" #bitrate, \
.codec_type = AVMEDIA_TYPE_AUDIO, \
.codec_id = CODEC_ID_ADPCM_G726, \
.init = g726_ ## bitrate ## _init, \
}
static
int
g726_24_init
(
AVFormatContext
*
s
,
int
st_index
,
PayloadContext
*
data
)
{
AVStream
*
stream
=
s
->
streams
[
st_index
];
AVCodecContext
*
codec
=
stream
->
codec
;
codec
->
bit_rate
=
24000
;
if
(
codec
->
sample_rate
)
codec
->
bits_per_coded_sample
=
av_clip
((
codec
->
bit_rate
+
codec
->
sample_rate
/
2
)
/
codec
->
sample_rate
,
2
,
5
);
return
0
;
}
static
int
g726_32_init
(
AVFormatContext
*
s
,
int
st_index
,
PayloadContext
*
data
)
{
AVStream
*
stream
=
s
->
streams
[
st_index
];
AVCodecContext
*
codec
=
stream
->
codec
;
codec
->
bit_rate
=
32000
;
if
(
codec
->
sample_rate
)
codec
->
bits_per_coded_sample
=
av_clip
((
codec
->
bit_rate
+
codec
->
sample_rate
/
2
)
/
codec
->
sample_rate
,
2
,
5
);
return
0
;
}
static
int
g726_40_init
(
AVFormatContext
*
s
,
int
st_index
,
PayloadContext
*
data
)
{
AVStream
*
stream
=
s
->
streams
[
st_index
];
AVCodecContext
*
codec
=
stream
->
codec
;
codec
->
bit_rate
=
40000
;
if
(
codec
->
sample_rate
)
codec
->
bits_per_coded_sample
=
av_clip
((
codec
->
bit_rate
+
codec
->
sample_rate
/
2
)
/
codec
->
sample_rate
,
2
,
5
);
return
0
;
}
RTPDynamicProtocolHandler
ff_g726_16_dynamic_handler
=
{
.
enc_name
=
"G726-16"
,
.
codec_type
=
AVMEDIA_TYPE_AUDIO
,
.
codec_id
=
CODEC_ID_ADPCM_G726
,
.
init
=
g726_16_init
,
};
RTPDynamicProtocolHandler
ff_g726_24_dynamic_handler
=
{
.
enc_name
=
"G726-24"
,
.
codec_type
=
AVMEDIA_TYPE_AUDIO
,
.
codec_id
=
CODEC_ID_ADPCM_G726
,
.
init
=
g726_24_init
,
};
RTPDynamicProtocolHandler
ff_g726_32_dynamic_handler
=
{
.
enc_name
=
"G726-32"
,
.
codec_type
=
AVMEDIA_TYPE_AUDIO
,
.
codec_id
=
CODEC_ID_ADPCM_G726
,
.
init
=
g726_32_init
,
};
RTPDynamicProtocolHandler
ff_g726_40_dynamic_handler
=
{
.
enc_name
=
"G726-40"
,
.
codec_type
=
AVMEDIA_TYPE_AUDIO
,
.
codec_id
=
CODEC_ID_ADPCM_G726
,
.
init
=
g726_40_init
,
};
RTP_G726_HANDLER
(
16
);
RTP_G726_HANDLER
(
24
);
RTP_G726_HANDLER
(
32
);
RTP_G726_HANDLER
(
40
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment