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
ffc437c0
Commit
ffc437c0
authored
May 10, 2011
by
Alex Converse
Committed by
Alex Converse
May 11, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cosmetics: Fix crazy formatting in resample.
parent
3e00abab
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
51 additions
and
48 deletions
+51
-48
resample.c
libavcodec/resample.c
+51
-48
No files found.
libavcodec/resample.c
View file @
ffc437c0
...
@@ -39,7 +39,9 @@ static const char *context_to_name(void *ptr)
...
@@ -39,7 +39,9 @@ static const char *context_to_name(void *ptr)
}
}
static
const
AVOption
options
[]
=
{{
NULL
}};
static
const
AVOption
options
[]
=
{{
NULL
}};
static
const
AVClass
audioresample_context_class
=
{
"ReSampleContext"
,
context_to_name
,
options
,
LIBAVUTIL_VERSION_INT
};
static
const
AVClass
audioresample_context_class
=
{
"ReSampleContext"
,
context_to_name
,
options
,
LIBAVUTIL_VERSION_INT
};
struct
ReSampleContext
{
struct
ReSampleContext
{
struct
AVResampleContext
*
resample_context
;
struct
AVResampleContext
*
resample_context
;
...
@@ -50,9 +52,9 @@ struct ReSampleContext {
...
@@ -50,9 +52,9 @@ struct ReSampleContext {
int
input_channels
,
output_channels
,
filter_channels
;
int
input_channels
,
output_channels
,
filter_channels
;
AVAudioConvert
*
convert_ctx
[
2
];
AVAudioConvert
*
convert_ctx
[
2
];
enum
AVSampleFormat
sample_fmt
[
2
];
///< input and output sample format
enum
AVSampleFormat
sample_fmt
[
2
];
///< input and output sample format
unsigned
sample_size
[
2
];
///< size of one sample in sample_fmt
unsigned
sample_size
[
2
];
///< size of one sample in sample_fmt
short
*
buffer
[
2
];
///< buffers used for conversion to S16
short
*
buffer
[
2
];
///< buffers used for conversion to S16
unsigned
buffer_size
[
2
];
///< sizes of allocated buffers
unsigned
buffer_size
[
2
];
///< sizes of allocated buffers
};
};
/* n1: number of samples */
/* n1: number of samples */
...
@@ -131,17 +133,17 @@ static void interleave(short *output, short **input, int channels, int samples)
...
@@ -131,17 +133,17 @@ static void interleave(short *output, short **input, int channels, int samples)
static
void
ac3_5p1_mux
(
short
*
output
,
short
*
input1
,
short
*
input2
,
int
n
)
static
void
ac3_5p1_mux
(
short
*
output
,
short
*
input1
,
short
*
input2
,
int
n
)
{
{
int
i
;
int
i
;
short
l
,
r
;
short
l
,
r
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
for
(
i
=
0
;
i
<
n
;
i
++
)
{
l
=
*
input1
++
;
l
=
*
input1
++
;
r
=
*
input2
++
;
r
=
*
input2
++
;
*
output
++
=
l
;
/* left */
*
output
++
=
l
;
/* left */
*
output
++
=
(
l
/
2
)
+
(
r
/
2
);
/* center */
*
output
++
=
(
l
/
2
)
+
(
r
/
2
);
/* center */
*
output
++
=
r
;
/* right */
*
output
++
=
r
;
/* right */
*
output
++
=
0
;
/* left surround */
*
output
++
=
0
;
/* left surround */
*
output
++
=
0
;
/* right surroud */
*
output
++
=
0
;
/* right surroud */
*
output
++
=
0
;
/* low freq */
*
output
++
=
0
;
/* low freq */
}
}
}
}
...
@@ -154,27 +156,25 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
...
@@ -154,27 +156,25 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
{
{
ReSampleContext
*
s
;
ReSampleContext
*
s
;
if
(
input_channels
>
MAX_CHANNELS
)
if
(
input_channels
>
MAX_CHANNELS
)
{
{
av_log
(
NULL
,
AV_LOG_ERROR
,
av_log
(
NULL
,
AV_LOG_ERROR
,
"Resampling with input channels greater than %d is unsupported.
\n
"
,
"Resampling with input channels greater than %d is unsupported.
\n
"
,
MAX_CHANNELS
);
MAX_CHANNELS
);
return
NULL
;
return
NULL
;
}
}
if
(
output_channels
>
2
&&
if
(
output_channels
>
2
&&
!
(
output_channels
==
6
&&
input_channels
==
2
)
&&
!
(
output_channels
==
6
&&
input_channels
==
2
)
&&
output_channels
!=
input_channels
)
{
output_channels
!=
input_channels
)
{
av_log
(
NULL
,
AV_LOG_ERROR
,
av_log
(
NULL
,
AV_LOG_ERROR
,
"Resampling output channel count must be 1 or 2 for mono input; 1, 2 or 6 for stereo input; or N for N channel input.
\n
"
);
"Resampling output channel count must be 1 or 2 for mono input; 1, 2 or 6 for stereo input; or N for N channel input.
\n
"
);
return
NULL
;
return
NULL
;
}
}
s
=
av_mallocz
(
sizeof
(
ReSampleContext
));
s
=
av_mallocz
(
sizeof
(
ReSampleContext
));
if
(
!
s
)
if
(
!
s
)
{
{
av_log
(
NULL
,
AV_LOG_ERROR
,
"Can't allocate memory for resample context.
\n
"
);
av_log
(
NULL
,
AV_LOG_ERROR
,
"Can't allocate memory for resample context.
\n
"
);
return
NULL
;
return
NULL
;
}
}
s
->
ratio
=
(
float
)
output_rate
/
(
float
)
input_rate
;
s
->
ratio
=
(
float
)
output_rate
/
(
float
)
input_rate
;
...
@@ -185,10 +185,10 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
...
@@ -185,10 +185,10 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
if
(
s
->
output_channels
<
s
->
filter_channels
)
if
(
s
->
output_channels
<
s
->
filter_channels
)
s
->
filter_channels
=
s
->
output_channels
;
s
->
filter_channels
=
s
->
output_channels
;
s
->
sample_fmt
[
0
]
=
sample_fmt_in
;
s
->
sample_fmt
[
0
]
=
sample_fmt_in
;
s
->
sample_fmt
[
1
]
=
sample_fmt_out
;
s
->
sample_fmt
[
1
]
=
sample_fmt_out
;
s
->
sample_size
[
0
]
=
av_get_bits_per_sample_fmt
(
s
->
sample_fmt
[
0
])
>>
3
;
s
->
sample_size
[
0
]
=
av_get_bits_per_sample_fmt
(
s
->
sample_fmt
[
0
])
>>
3
;
s
->
sample_size
[
1
]
=
av_get_bits_per_sample_fmt
(
s
->
sample_fmt
[
1
])
>>
3
;
s
->
sample_size
[
1
]
=
av_get_bits_per_sample_fmt
(
s
->
sample_fmt
[
1
])
>>
3
;
if
(
s
->
sample_fmt
[
0
]
!=
AV_SAMPLE_FMT_S16
)
{
if
(
s
->
sample_fmt
[
0
]
!=
AV_SAMPLE_FMT_S16
)
{
if
(
!
(
s
->
convert_ctx
[
0
]
=
av_audio_convert_alloc
(
AV_SAMPLE_FMT_S16
,
1
,
if
(
!
(
s
->
convert_ctx
[
0
]
=
av_audio_convert_alloc
(
AV_SAMPLE_FMT_S16
,
1
,
...
@@ -214,8 +214,9 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
...
@@ -214,8 +214,9 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
}
}
#define TAPS 16
#define TAPS 16
s
->
resample_context
=
av_resample_init
(
output_rate
,
input_rate
,
s
->
resample_context
=
av_resample_init
(
output_rate
,
input_rate
,
filter_length
,
log2_phase_count
,
linear
,
cutoff
);
filter_length
,
log2_phase_count
,
linear
,
cutoff
);
*
(
const
AVClass
**
)
s
->
resample_context
=
&
audioresample_context_class
;
*
(
const
AVClass
**
)
s
->
resample_context
=
&
audioresample_context_class
;
...
@@ -244,7 +245,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
...
@@ -244,7 +245,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
int
ostride
[
1
]
=
{
2
};
int
ostride
[
1
]
=
{
2
};
const
void
*
ibuf
[
1
]
=
{
input
};
const
void
*
ibuf
[
1
]
=
{
input
};
void
*
obuf
[
1
];
void
*
obuf
[
1
];
unsigned
input_size
=
nb_samples
*
s
->
input_channels
*
2
;
unsigned
input_size
=
nb_samples
*
s
->
input_channels
*
2
;
if
(
!
s
->
buffer_size
[
0
]
||
s
->
buffer_size
[
0
]
<
input_size
)
{
if
(
!
s
->
buffer_size
[
0
]
||
s
->
buffer_size
[
0
]
<
input_size
)
{
av_free
(
s
->
buffer
[
0
]);
av_free
(
s
->
buffer
[
0
]);
...
@@ -259,15 +260,16 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
...
@@ -259,15 +260,16 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
obuf
[
0
]
=
s
->
buffer
[
0
];
obuf
[
0
]
=
s
->
buffer
[
0
];
if
(
av_audio_convert
(
s
->
convert_ctx
[
0
],
obuf
,
ostride
,
if
(
av_audio_convert
(
s
->
convert_ctx
[
0
],
obuf
,
ostride
,
ibuf
,
istride
,
nb_samples
*
s
->
input_channels
)
<
0
)
{
ibuf
,
istride
,
nb_samples
*
s
->
input_channels
)
<
0
)
{
av_log
(
s
->
resample_context
,
AV_LOG_ERROR
,
"Audio sample format conversion failed
\n
"
);
av_log
(
s
->
resample_context
,
AV_LOG_ERROR
,
"Audio sample format conversion failed
\n
"
);
return
0
;
return
0
;
}
}
input
=
s
->
buffer
[
0
];
input
=
s
->
buffer
[
0
];
}
}
lenout
=
4
*
nb_samples
*
s
->
ratio
+
16
;
lenout
=
4
*
nb_samples
*
s
->
ratio
+
16
;
if
(
s
->
sample_fmt
[
1
]
!=
AV_SAMPLE_FMT_S16
)
{
if
(
s
->
sample_fmt
[
1
]
!=
AV_SAMPLE_FMT_S16
)
{
output_bak
=
output
;
output_bak
=
output
;
...
@@ -286,20 +288,19 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
...
@@ -286,20 +288,19 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
}
}
/* XXX: move those malloc to resample init code */
/* XXX: move those malloc to resample init code */
for
(
i
=
0
;
i
<
s
->
filter_channels
;
i
++
)
{
for
(
i
=
0
;
i
<
s
->
filter_channels
;
i
++
)
{
bufin
[
i
]
=
av_malloc
(
(
nb_samples
+
s
->
temp_len
)
*
sizeof
(
short
)
);
bufin
[
i
]
=
av_malloc
((
nb_samples
+
s
->
temp_len
)
*
sizeof
(
short
)
);
memcpy
(
bufin
[
i
],
s
->
temp
[
i
],
s
->
temp_len
*
sizeof
(
short
));
memcpy
(
bufin
[
i
],
s
->
temp
[
i
],
s
->
temp_len
*
sizeof
(
short
));
buftmp2
[
i
]
=
bufin
[
i
]
+
s
->
temp_len
;
buftmp2
[
i
]
=
bufin
[
i
]
+
s
->
temp_len
;
bufout
[
i
]
=
av_malloc
(
lenout
*
sizeof
(
short
));
bufout
[
i
]
=
av_malloc
(
lenout
*
sizeof
(
short
));
}
}
if
(
s
->
input_channels
==
2
&&
if
(
s
->
input_channels
==
2
&&
s
->
output_channels
==
1
)
{
s
->
output_channels
==
1
)
{
buftmp3
[
0
]
=
output
;
buftmp3
[
0
]
=
output
;
stereo_to_mono
(
buftmp2
[
0
],
input
,
nb_samples
);
stereo_to_mono
(
buftmp2
[
0
],
input
,
nb_samples
);
}
else
if
(
s
->
output_channels
>=
2
&&
s
->
input_channels
==
1
)
{
}
else
if
(
s
->
output_channels
>=
2
&&
s
->
input_channels
==
1
)
{
buftmp3
[
0
]
=
bufout
[
0
];
buftmp3
[
0
]
=
bufout
[
0
];
memcpy
(
buftmp2
[
0
],
input
,
nb_samples
*
sizeof
(
short
));
memcpy
(
buftmp2
[
0
],
input
,
nb_samples
*
sizeof
(
short
));
}
else
if
(
s
->
output_channels
>=
s
->
input_channels
&&
s
->
input_channels
>=
2
)
{
}
else
if
(
s
->
output_channels
>=
s
->
input_channels
&&
s
->
input_channels
>=
2
)
{
for
(
i
=
0
;
i
<
s
->
input_channels
;
i
++
)
{
for
(
i
=
0
;
i
<
s
->
input_channels
;
i
++
)
{
buftmp3
[
i
]
=
bufout
[
i
];
buftmp3
[
i
]
=
bufout
[
i
];
...
@@ -307,21 +308,22 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
...
@@ -307,21 +308,22 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
deinterleave
(
buftmp2
,
input
,
s
->
input_channels
,
nb_samples
);
deinterleave
(
buftmp2
,
input
,
s
->
input_channels
,
nb_samples
);
}
else
{
}
else
{
buftmp3
[
0
]
=
output
;
buftmp3
[
0
]
=
output
;
memcpy
(
buftmp2
[
0
],
input
,
nb_samples
*
sizeof
(
short
));
memcpy
(
buftmp2
[
0
],
input
,
nb_samples
*
sizeof
(
short
));
}
}
nb_samples
+=
s
->
temp_len
;
nb_samples
+=
s
->
temp_len
;
/* resample each channel */
/* resample each channel */
nb_samples1
=
0
;
/* avoid warning */
nb_samples1
=
0
;
/* avoid warning */
for
(
i
=
0
;
i
<
s
->
filter_channels
;
i
++
)
{
for
(
i
=
0
;
i
<
s
->
filter_channels
;
i
++
)
{
int
consumed
;
int
consumed
;
int
is_last
=
i
+
1
==
s
->
filter_channels
;
int
is_last
=
i
+
1
==
s
->
filter_channels
;
nb_samples1
=
av_resample
(
s
->
resample_context
,
buftmp3
[
i
],
bufin
[
i
],
&
consumed
,
nb_samples
,
lenout
,
is_last
);
nb_samples1
=
av_resample
(
s
->
resample_context
,
buftmp3
[
i
],
bufin
[
i
],
s
->
temp_len
=
nb_samples
-
consumed
;
&
consumed
,
nb_samples
,
lenout
,
is_last
);
s
->
temp
[
i
]
=
av_realloc
(
s
->
temp
[
i
],
s
->
temp_len
*
sizeof
(
short
));
s
->
temp_len
=
nb_samples
-
consumed
;
memcpy
(
s
->
temp
[
i
],
bufin
[
i
]
+
consumed
,
s
->
temp_len
*
sizeof
(
short
));
s
->
temp
[
i
]
=
av_realloc
(
s
->
temp
[
i
],
s
->
temp_len
*
sizeof
(
short
));
memcpy
(
s
->
temp
[
i
],
bufin
[
i
]
+
consumed
,
s
->
temp_len
*
sizeof
(
short
));
}
}
if
(
s
->
output_channels
==
2
&&
s
->
input_channels
==
1
)
{
if
(
s
->
output_channels
==
2
&&
s
->
input_channels
==
1
)
{
...
@@ -339,8 +341,9 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
...
@@ -339,8 +341,9 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
void
*
obuf
[
1
]
=
{
output_bak
};
void
*
obuf
[
1
]
=
{
output_bak
};
if
(
av_audio_convert
(
s
->
convert_ctx
[
1
],
obuf
,
ostride
,
if
(
av_audio_convert
(
s
->
convert_ctx
[
1
],
obuf
,
ostride
,
ibuf
,
istride
,
nb_samples1
*
s
->
output_channels
)
<
0
)
{
ibuf
,
istride
,
nb_samples1
*
s
->
output_channels
)
<
0
)
{
av_log
(
s
->
resample_context
,
AV_LOG_ERROR
,
"Audio sample format convertion failed
\n
"
);
av_log
(
s
->
resample_context
,
AV_LOG_ERROR
,
"Audio sample format convertion failed
\n
"
);
return
0
;
return
0
;
}
}
}
}
...
...
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