Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
d6b5bc59
Commit
d6b5bc59
authored
Dec 31, 2009
by
Rémi Duraffort
Committed by
Pierre d'Herbemont
Dec 31, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bandlimited: factorize.
Signed-off-by:
Pierre d'Herbemont
<
pdherbemont@free.fr
>
parent
a4944734
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
72 additions
and
122 deletions
+72
-122
modules/audio_filter/resampler/bandlimited.c
modules/audio_filter/resampler/bandlimited.c
+72
-122
No files found.
modules/audio_filter/resampler/bandlimited.c
View file @
d6b5bc59
...
@@ -93,6 +93,74 @@ vlc_module_begin ()
...
@@ -93,6 +93,74 @@ vlc_module_begin ()
set_callbacks
(
OpenFilter
,
CloseFilter
)
set_callbacks
(
OpenFilter
,
CloseFilter
)
vlc_module_end
()
vlc_module_end
()
static
void
Resample_helper
(
filter_t
*
p_filter
,
float
*
p_in
,
float
**
pp_out
,
int
d_factor
,
int
i_nb_channels
,
block_t
*
p_out_buf
,
int
*
pi_out
)
{
filter_sys_t
*
p_sys
=
p_filter
->
p_sys
;
while
(
p_sys
->
i_remainder
<
p_filter
->
fmt_out
.
audio
.
i_rate
)
{
if
(
d_factor
>=
1
)
{
/* FilterFloatUP() is faster if we can use it */
/* Perform left-wing inner product */
FilterFloatUP
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
,
*
pp_out
,
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
-
1
,
i_nb_channels
);
/* Perform right-wing inner product */
FilterFloatUP
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
+
i_nb_channels
,
*
pp_out
,
p_filter
->
fmt_out
.
audio
.
i_rate
-
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
1
,
i_nb_channels
);
#if 0
/* Normalize for unity filter gain */
for( int i = 0; i < i_nb_channels; i++ )
{
*(p_out+i) *= d_old_scale_factor;
}
#endif
/* Sanity check */
if
(
p_out_buf
->
i_buffer
/
p_filter
->
fmt_in
.
audio
.
i_bytes_per_frame
<=
(
unsigned
int
)
*
pi_out
+
1
)
{
*
pp_out
+=
i_nb_channels
;
(
*
pi_out
)
++
;
p_sys
->
i_remainder
+=
p_filter
->
fmt_in
.
audio
.
i_rate
;
break
;
}
}
else
{
/* Perform left-wing inner product */
FilterFloatUD
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
,
*
pp_out
,
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
p_filter
->
fmt_in
.
audio
.
i_rate
,
-
1
,
i_nb_channels
);
/* Perform right-wing inner product */
FilterFloatUD
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
+
i_nb_channels
,
*
pp_out
,
p_filter
->
fmt_out
.
audio
.
i_rate
-
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
p_filter
->
fmt_in
.
audio
.
i_rate
,
1
,
i_nb_channels
);
}
*
pp_out
+=
i_nb_channels
;
(
*
pi_out
)
++
;
p_sys
->
i_remainder
+=
p_filter
->
fmt_in
.
audio
.
i_rate
;
}
}
/*****************************************************************************
/*****************************************************************************
* Resample: convert a buffer
* Resample: convert a buffer
*****************************************************************************/
*****************************************************************************/
...
@@ -220,67 +288,8 @@ static block_t *Resample( filter_t * p_filter, block_t * p_in_buf )
...
@@ -220,67 +288,8 @@ static block_t *Resample( filter_t * p_filter, block_t * p_in_buf )
continue
;
continue
;
}
}
while
(
p_sys
->
i_remainder
<
p_filter
->
fmt_out
.
audio
.
i_rate
)
Resample_helper
(
p_filter
,
p_in
,
&
p_out
,
p_sys
->
d_old_factor
,
{
i_nb_channels
,
p_out_buf
,
&
i_out
);
if
(
p_sys
->
d_old_factor
>=
1
)
{
/* FilterFloatUP() is faster if we can use it */
/* Perform left-wing inner product */
FilterFloatUP
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
,
p_out
,
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
-
1
,
i_nb_channels
);
/* Perform right-wing inner product */
FilterFloatUP
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
+
i_nb_channels
,
p_out
,
p_filter
->
fmt_out
.
audio
.
i_rate
-
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
1
,
i_nb_channels
);
#if 0
/* Normalize for unity filter gain */
for( i = 0; i < i_nb_channels; i++ )
{
*(p_out+i) *= d_old_scale_factor;
}
#endif
/* Sanity check */
if
(
p_out_buf
->
i_buffer
/
p_filter
->
fmt_in
.
audio
.
i_bytes_per_frame
<=
(
unsigned
int
)
i_out
+
1
)
{
p_out
+=
i_nb_channels
;
i_out
++
;
p_sys
->
i_remainder
+=
p_filter
->
fmt_in
.
audio
.
i_rate
;
break
;
}
}
else
{
/* Perform left-wing inner product */
FilterFloatUD
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
,
p_out
,
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
p_filter
->
fmt_in
.
audio
.
i_rate
,
-
1
,
i_nb_channels
);
/* Perform right-wing inner product */
FilterFloatUD
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
+
i_nb_channels
,
p_out
,
p_filter
->
fmt_out
.
audio
.
i_rate
-
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
p_filter
->
fmt_in
.
audio
.
i_rate
,
1
,
i_nb_channels
);
}
p_out
+=
i_nb_channels
;
i_out
++
;
p_sys
->
i_remainder
+=
p_filter
->
fmt_in
.
audio
.
i_rate
;
}
p_in
+=
i_nb_channels
;
p_in
+=
i_nb_channels
;
p_sys
->
i_remainder
-=
p_filter
->
fmt_out
.
audio
.
i_rate
;
p_sys
->
i_remainder
-=
p_filter
->
fmt_out
.
audio
.
i_rate
;
...
@@ -294,67 +303,8 @@ static block_t *Resample( filter_t * p_filter, block_t * p_in_buf )
...
@@ -294,67 +303,8 @@ static block_t *Resample( filter_t * p_filter, block_t * p_in_buf )
}
}
for
(
;
i_in
<
i_in_nb
-
i_filter_wing
;
i_in
++
)
for
(
;
i_in
<
i_in_nb
-
i_filter_wing
;
i_in
++
)
{
{
while
(
p_sys
->
i_remainder
<
p_filter
->
fmt_out
.
audio
.
i_rate
)
Resample_helper
(
p_filter
,
p_in
,
&
p_out
,
d_factor
,
{
i_nb_channels
,
p_out_buf
,
&
i_out
);
if
(
d_factor
>=
1
)
{
/* FilterFloatUP() is faster if we can use it */
/* Perform left-wing inner product */
FilterFloatUP
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
,
p_out
,
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
-
1
,
i_nb_channels
);
/* Perform right-wing inner product */
FilterFloatUP
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
+
i_nb_channels
,
p_out
,
p_filter
->
fmt_out
.
audio
.
i_rate
-
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
1
,
i_nb_channels
);
#if 0
/* Normalize for unity filter gain */
for( int i = 0; i < i_nb_channels; i++ )
{
*(p_out+i) *= d_old_scale_factor;
}
#endif
/* Sanity check */
if
(
p_out_buf
->
i_buffer
/
p_filter
->
fmt_in
.
audio
.
i_bytes_per_frame
<=
(
unsigned
int
)
i_out
+
1
)
{
p_out
+=
i_nb_channels
;
i_out
++
;
p_sys
->
i_remainder
+=
p_filter
->
fmt_in
.
audio
.
i_rate
;
break
;
}
}
else
{
/* Perform left-wing inner product */
FilterFloatUD
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
,
p_out
,
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
p_filter
->
fmt_in
.
audio
.
i_rate
,
-
1
,
i_nb_channels
);
/* Perform right-wing inner product */
FilterFloatUD
(
SMALL_FILTER_FLOAT_IMP
,
SMALL_FILTER_FLOAT_IMPD
,
SMALL_FILTER_NWING
,
p_in
+
i_nb_channels
,
p_out
,
p_filter
->
fmt_out
.
audio
.
i_rate
-
p_sys
->
i_remainder
,
p_filter
->
fmt_out
.
audio
.
i_rate
,
p_filter
->
fmt_in
.
audio
.
i_rate
,
1
,
i_nb_channels
);
}
p_out
+=
i_nb_channels
;
i_out
++
;
p_sys
->
i_remainder
+=
p_filter
->
fmt_in
.
audio
.
i_rate
;
}
p_in
+=
i_nb_channels
;
p_in
+=
i_nb_channels
;
p_sys
->
i_remainder
-=
p_filter
->
fmt_out
.
audio
.
i_rate
;
p_sys
->
i_remainder
-=
p_filter
->
fmt_out
.
audio
.
i_rate
;
...
...
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