Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
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)
}
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
AVResampleContext
*
resample_context
;
...
...
@@ -50,9 +52,9 @@ struct ReSampleContext {
int
input_channels
,
output_channels
,
filter_channels
;
AVAudioConvert
*
convert_ctx
[
2
];
enum
AVSampleFormat
sample_fmt
[
2
];
///< input and output sample format
unsigned
sample_size
[
2
];
///< size of one sample in sample_fmt
short
*
buffer
[
2
];
///< buffers used for conversion to S16
unsigned
buffer_size
[
2
];
///< sizes of allocated buffers
unsigned
sample_size
[
2
];
///< size of one sample in sample_fmt
short
*
buffer
[
2
];
///< buffers used for conversion to S16
unsigned
buffer_size
[
2
];
///< sizes of allocated buffers
};
/* n1: number of 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
)
{
int
i
;
short
l
,
r
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
l
=
*
input1
++
;
r
=
*
input2
++
;
*
output
++
=
l
;
/* left */
*
output
++
=
(
l
/
2
)
+
(
r
/
2
);
/* center */
*
output
++
=
r
;
/* right */
*
output
++
=
0
;
/* left surround */
*
output
++
=
0
;
/* right surroud */
*
output
++
=
0
;
/* low freq */
short
l
,
r
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
l
=
*
input1
++
;
r
=
*
input2
++
;
*
output
++
=
l
;
/* left */
*
output
++
=
(
l
/
2
)
+
(
r
/
2
);
/* center */
*
output
++
=
r
;
/* right */
*
output
++
=
0
;
/* left surround */
*
output
++
=
0
;
/* right surroud */
*
output
++
=
0
;
/* low freq */
}
}
...
...
@@ -154,27 +156,25 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
{
ReSampleContext
*
s
;
if
(
input_channels
>
MAX_CHANNELS
)
{
if
(
input_channels
>
MAX_CHANNELS
)
{
av_log
(
NULL
,
AV_LOG_ERROR
,
"Resampling with input channels greater than %d is unsupported.
\n
"
,
MAX_CHANNELS
);
return
NULL
;
}
if
(
output_channels
>
2
&&
}
if
(
output_channels
>
2
&&
!
(
output_channels
==
6
&&
input_channels
==
2
)
&&
output_channels
!=
input_channels
)
{
output_channels
!=
input_channels
)
{
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
"
);
return
NULL
;
}
s
=
av_mallocz
(
sizeof
(
ReSampleContext
));
if
(
!
s
)
{
if
(
!
s
)
{
av_log
(
NULL
,
AV_LOG_ERROR
,
"Can't allocate memory for resample context.
\n
"
);
return
NULL
;
}
}
s
->
ratio
=
(
float
)
output_rate
/
(
float
)
input_rate
;
...
...
@@ -185,10 +185,10 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
if
(
s
->
output_channels
<
s
->
filter_channels
)
s
->
filter_channels
=
s
->
output_channels
;
s
->
sample_fmt
[
0
]
=
sample_fmt_in
;
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
[
1
]
=
av_get_bits_per_sample_fmt
(
s
->
sample_fmt
[
1
])
>>
3
;
s
->
sample_fmt
[
0
]
=
sample_fmt_in
;
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
[
1
]
=
av_get_bits_per_sample_fmt
(
s
->
sample_fmt
[
1
])
>>
3
;
if
(
s
->
sample_fmt
[
0
]
!=
AV_SAMPLE_FMT_S16
)
{
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,
}
#define TAPS 16
s
->
resample_context
=
av_resample_init
(
output_rate
,
input_rate
,
filter_length
,
log2_phase_count
,
linear
,
cutoff
);
s
->
resample_context
=
av_resample_init
(
output_rate
,
input_rate
,
filter_length
,
log2_phase_count
,
linear
,
cutoff
);
*
(
const
AVClass
**
)
s
->
resample_context
=
&
audioresample_context_class
;
...
...
@@ -244,7 +245,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
int
ostride
[
1
]
=
{
2
};
const
void
*
ibuf
[
1
]
=
{
input
};
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
)
{
av_free
(
s
->
buffer
[
0
]);
...
...
@@ -259,15 +260,16 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
obuf
[
0
]
=
s
->
buffer
[
0
];
if
(
av_audio_convert
(
s
->
convert_ctx
[
0
],
obuf
,
ostride
,
ibuf
,
istride
,
nb_samples
*
s
->
input_channels
)
<
0
)
{
av_log
(
s
->
resample_context
,
AV_LOG_ERROR
,
"Audio sample format conversion failed
\n
"
);
ibuf
,
istride
,
nb_samples
*
s
->
input_channels
)
<
0
)
{
av_log
(
s
->
resample_context
,
AV_LOG_ERROR
,
"Audio sample format conversion failed
\n
"
);
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
)
{
output_bak
=
output
;
...
...
@@ -286,20 +288,19 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
}
/* XXX: move those malloc to resample init code */
for
(
i
=
0
;
i
<
s
->
filter_channels
;
i
++
)
{
bufin
[
i
]
=
av_malloc
(
(
nb_samples
+
s
->
temp_len
)
*
sizeof
(
short
)
);
for
(
i
=
0
;
i
<
s
->
filter_channels
;
i
++
)
{
bufin
[
i
]
=
av_malloc
((
nb_samples
+
s
->
temp_len
)
*
sizeof
(
short
)
);
memcpy
(
bufin
[
i
],
s
->
temp
[
i
],
s
->
temp_len
*
sizeof
(
short
));
buftmp2
[
i
]
=
bufin
[
i
]
+
s
->
temp_len
;
bufout
[
i
]
=
av_malloc
(
lenout
*
sizeof
(
short
));
}
if
(
s
->
input_channels
==
2
&&
s
->
output_channels
==
1
)
{
if
(
s
->
input_channels
==
2
&&
s
->
output_channels
==
1
)
{
buftmp3
[
0
]
=
output
;
stereo_to_mono
(
buftmp2
[
0
],
input
,
nb_samples
);
}
else
if
(
s
->
output_channels
>=
2
&&
s
->
input_channels
==
1
)
{
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
)
{
for
(
i
=
0
;
i
<
s
->
input_channels
;
i
++
)
{
buftmp3
[
i
]
=
bufout
[
i
];
...
...
@@ -307,21 +308,22 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
deinterleave
(
buftmp2
,
input
,
s
->
input_channels
,
nb_samples
);
}
else
{
buftmp3
[
0
]
=
output
;
memcpy
(
buftmp2
[
0
],
input
,
nb_samples
*
sizeof
(
short
));
memcpy
(
buftmp2
[
0
],
input
,
nb_samples
*
sizeof
(
short
));
}
nb_samples
+=
s
->
temp_len
;
/* resample each channel */
nb_samples1
=
0
;
/* avoid warning */
for
(
i
=
0
;
i
<
s
->
filter_channels
;
i
++
)
{
for
(
i
=
0
;
i
<
s
->
filter_channels
;
i
++
)
{
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
);
s
->
temp_len
=
nb_samples
-
consumed
;
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
));
nb_samples1
=
av_resample
(
s
->
resample_context
,
buftmp3
[
i
],
bufin
[
i
],
&
consumed
,
nb_samples
,
lenout
,
is_last
);
s
->
temp_len
=
nb_samples
-
consumed
;
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
)
{
...
...
@@ -339,8 +341,9 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
void
*
obuf
[
1
]
=
{
output_bak
};
if
(
av_audio_convert
(
s
->
convert_ctx
[
1
],
obuf
,
ostride
,
ibuf
,
istride
,
nb_samples1
*
s
->
output_channels
)
<
0
)
{
av_log
(
s
->
resample_context
,
AV_LOG_ERROR
,
"Audio sample format convertion failed
\n
"
);
ibuf
,
istride
,
nb_samples1
*
s
->
output_channels
)
<
0
)
{
av_log
(
s
->
resample_context
,
AV_LOG_ERROR
,
"Audio sample format convertion failed
\n
"
);
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