Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
audiowmark
Project
Project
Details
Activity
Releases
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
audiowmark
Commits
389dbbbb
Commit
389dbbbb
authored
Jan 30, 2019
by
Stefan Westerfeld
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactoring: mix_freq => sample_rate; store sample_rate as integer.
Signed-off-by:
Stefan Westerfeld
<
stefan@space.twc.de
>
parent
56815c44
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
26 additions
and
26 deletions
+26
-26
audiowmark.cc
src/audiowmark.cc
+14
-14
wavdata.cc
src/wavdata.cc
+7
-7
wavdata.hh
src/wavdata.hh
+5
-5
No files found.
src/audiowmark.cc
View file @
389dbbbb
...
...
@@ -504,10 +504,10 @@ mark_pad (const WavData& wav_data, size_t frame, const vector<vector<complex<flo
WavData
resample
(
const
WavData
&
wav_data
,
int
rate
)
{
if
(
fabs
(
double
(
rate
)
-
wav_data
.
mix_freq
())
<
0.1
)
if
(
rate
==
wav_data
.
sample_rate
()
)
return
wav_data
;
double
ratio
=
double
(
rate
)
/
wav_data
.
mix_freq
();
double
ratio
=
double
(
rate
)
/
wav_data
.
sample_rate
();
const
vector
<
float
>&
in
=
wav_data
.
samples
();
vector
<
float
>
out
(
lrint
(
in
.
size
()
/
wav_data
.
n_channels
()
*
ratio
)
*
wav_data
.
n_channels
());
...
...
@@ -574,11 +574,11 @@ add_watermark (const string& infile, const string& outfile, const string& bits)
while
(
in_signal
.
size
()
%
(
in_wav_data
.
n_channels
()
*
Params
::
frame_size
))
in_signal
.
push_back
(
0
);
WavData
wav_data
(
in_signal
,
in_wav_data
.
n_channels
(),
in_wav_data
.
mix_freq
(),
in_wav_data
.
bit_depth
());
WavData
wav_data
(
in_signal
,
in_wav_data
.
n_channels
(),
in_wav_data
.
sample_rate
(),
in_wav_data
.
bit_depth
());
/* we have extra space for the padded wave data -> truncated before save */
vector
<
float
>
out_signal
(
wav_data
.
n_values
());
printf
(
"channels: %d, samples: %zd, mix_freq: %
f
\n
"
,
wav_data
.
n_channels
(),
wav_data
.
n_values
(),
wav_data
.
mix_freq
());
printf
(
"channels: %d, samples: %zd, mix_freq: %
d
\n
"
,
wav_data
.
n_channels
(),
wav_data
.
n_values
(),
wav_data
.
sample_rate
());
vector
<
vector
<
complex
<
float
>>>
fft_out
=
compute_frame_ffts
(
wav_data
,
0
,
frame_count
(
wav_data
));
vector
<
vector
<
complex
<
float
>>>
fft_delta_spect
;
...
...
@@ -661,8 +661,8 @@ add_watermark (const string& infile, const string& outfile, const string& bits)
}
/* last step: resample the watermark to the original sample rate, and then add mark and original audio */
WavData
mark_wav_data
(
out_signal
,
wav_data
.
n_channels
(),
wav_data
.
mix_freq
(),
wav_data
.
bit_depth
());
mark_wav_data
=
resample
(
mark_wav_data
,
orig_wav_data
.
mix_freq
());
WavData
mark_wav_data
(
out_signal
,
wav_data
.
n_channels
(),
wav_data
.
sample_rate
(),
wav_data
.
bit_depth
());
mark_wav_data
=
resample
(
mark_wav_data
,
orig_wav_data
.
sample_rate
());
vector
<
float
>
mark_samples
=
mark_wav_data
.
samples
();
vector
<
float
>
samples
=
orig_wav_data
.
samples
();
...
...
@@ -681,7 +681,7 @@ add_watermark (const string& infile, const string& outfile, const string& bits)
}
}
WavData
out_wav_data
(
samples
,
orig_wav_data
.
n_channels
(),
orig_wav_data
.
mix_freq
(),
orig_wav_data
.
bit_depth
());
WavData
out_wav_data
(
samples
,
orig_wav_data
.
n_channels
(),
orig_wav_data
.
sample_rate
(),
orig_wav_data
.
bit_depth
());
if
(
!
out_wav_data
.
save
(
outfile
))
{
fprintf
(
stderr
,
"audiowmark: error saving %s: %s
\n
"
,
outfile
.
c_str
(),
out_wav_data
.
error_blurb
());
...
...
@@ -1020,7 +1020,7 @@ decode_and_report (const WavData& wav_data, const string& orig_pattern)
if
(
sync_score
.
index
)
{
const
int
seconds
=
lrint
(
sync_score
.
index
/
wav_data
.
mix_freq
()
);
const
int
seconds
=
sync_score
.
index
/
wav_data
.
sample_rate
(
);
printf
(
"pattern %2d:%02d %s %.3f %.3f
\n
"
,
seconds
/
60
,
seconds
%
60
,
bit_vec_to_str
(
bit_vec
).
c_str
(),
sync_score
.
quality
,
decode_error
);
}
else
/* this is the combined pattern "all" */
...
...
@@ -1157,10 +1157,10 @@ gentest (const string& infile, const string& outfile)
const
vector
<
float
>&
in_signal
=
wav_data
.
samples
();
vector
<
float
>
out_signal
;
/*
160 seconds
of audio - this is approximately the minimal amount of audio data required
/*
2:45
of audio - this is approximately the minimal amount of audio data required
* for storing three separate watermarks with a 128-bit encoded message */
const
size_t
offset
=
0
*
wav_data
.
n_channels
()
*
int
(
wav_data
.
mix_freq
()
);
const
size_t
n_samples
=
165
*
wav_data
.
n_channels
()
*
int
(
wav_data
.
mix_freq
()
);
const
size_t
offset
=
0
*
wav_data
.
n_channels
()
*
wav_data
.
sample_rate
(
);
const
size_t
n_samples
=
165
*
wav_data
.
n_channels
()
*
wav_data
.
sample_rate
(
);
if
(
in_signal
.
size
()
<
(
offset
+
n_samples
))
{
fprintf
(
stderr
,
"audiowmark: input file %s too short
\n
"
,
infile
.
c_str
());
...
...
@@ -1170,7 +1170,7 @@ gentest (const string& infile, const string& outfile)
{
out_signal
.
push_back
(
in_signal
[
i
+
offset
]);
}
WavData
out_wav_data
(
out_signal
,
wav_data
.
n_channels
(),
wav_data
.
mix_freq
(),
wav_data
.
bit_depth
());
WavData
out_wav_data
(
out_signal
,
wav_data
.
n_channels
(),
wav_data
.
sample_rate
(),
wav_data
.
bit_depth
());
if
(
!
out_wav_data
.
save
(
outfile
))
{
fprintf
(
stderr
,
"audiowmark: error saving %s: %s
\n
"
,
outfile
.
c_str
(),
out_wav_data
.
error_blurb
());
...
...
@@ -1194,7 +1194,7 @@ scale (const string& infile, const string& outfile)
for
(
size_t
i
=
0
;
i
<
in_signal
.
size
();
i
++
)
out_signal
.
push_back
(
in_signal
[
i
]
*
Params
::
pre_scale
);
WavData
out_wav_data
(
out_signal
,
wav_data
.
n_channels
(),
wav_data
.
mix_freq
(),
wav_data
.
bit_depth
());
WavData
out_wav_data
(
out_signal
,
wav_data
.
n_channels
(),
wav_data
.
sample_rate
(),
wav_data
.
bit_depth
());
if
(
!
out_wav_data
.
save
(
outfile
))
{
fprintf
(
stderr
,
"audiowmark: error saving %s: %s
\n
"
,
outfile
.
c_str
(),
out_wav_data
.
error_blurb
());
...
...
@@ -1220,7 +1220,7 @@ cut_start (const string& infile, const string& outfile, const string& start_str)
for
(
size_t
i
=
start
*
wav_data
.
n_channels
();
i
<
in_signal
.
size
();
i
++
)
out_signal
.
push_back
(
in_signal
[
i
]);
WavData
out_wav_data
(
out_signal
,
wav_data
.
n_channels
(),
wav_data
.
mix_freq
(),
wav_data
.
bit_depth
());
WavData
out_wav_data
(
out_signal
,
wav_data
.
n_channels
(),
wav_data
.
sample_rate
(),
wav_data
.
bit_depth
());
if
(
!
out_wav_data
.
save
(
outfile
))
{
fprintf
(
stderr
,
"audiowmark: error saving %s: %s
\n
"
,
outfile
.
c_str
(),
out_wav_data
.
error_blurb
());
...
...
src/wavdata.cc
View file @
389dbbbb
...
...
@@ -17,11 +17,11 @@ WavData::WavData()
{
}
WavData
::
WavData
(
const
vector
<
float
>&
samples
,
int
n_channels
,
float
mix_freq
,
int
bit_depth
)
WavData
::
WavData
(
const
vector
<
float
>&
samples
,
int
n_channels
,
int
sample_rate
,
int
bit_depth
)
{
m_samples
=
samples
;
m_n_channels
=
n_channels
;
m_
mix_freq
=
mix_freq
;
m_
sample_rate
=
sample_rate
;
m_bit_depth
=
bit_depth
;
}
...
...
@@ -76,7 +76,7 @@ WavData::load (const string& filename)
for
(
size_t
i
=
0
;
i
<
m_samples
.
size
();
i
++
)
m_samples
[
i
]
=
isamples
[
i
]
*
norm
;
m_
mix_freq
=
sfinfo
.
samplerate
;
m_
sample_rate
=
sfinfo
.
samplerate
;
m_n_channels
=
sfinfo
.
channels
;
switch
(
sfinfo
.
format
&
SF_FORMAT_SUBMASK
)
...
...
@@ -121,7 +121,7 @@ WavData::save (const string& filename)
{
SF_INFO
sfinfo
=
{
0
,};
sfinfo
.
samplerate
=
lrint
(
m_mix_freq
)
;
sfinfo
.
samplerate
=
m_sample_rate
;
sfinfo
.
channels
=
m_n_channels
;
if
(
m_bit_depth
>
16
)
...
...
@@ -179,10 +179,10 @@ WavData::save (const string& filename)
return
true
;
}
floa
t
WavData
::
mix_freq
()
const
in
t
WavData
::
sample_rate
()
const
{
return
m_
mix_freq
;
return
m_
sample_rate
;
}
int
...
...
src/wavdata.hh
View file @
389dbbbb
...
...
@@ -7,19 +7,19 @@
class
WavData
{
std
::
vector
<
float
>
m_samples
;
float
m_mix_freq
=
0
;
int
m_n_channels
=
0
;
int
m_bit_depth
=
0
;
int
m_sample_rate
=
0
;
int
m_n_channels
=
0
;
int
m_bit_depth
=
0
;
std
::
string
m_error_blurb
;
public
:
WavData
();
WavData
(
const
std
::
vector
<
float
>&
samples
,
int
n_channels
,
float
mix_freq
,
int
bit_depth
);
WavData
(
const
std
::
vector
<
float
>&
samples
,
int
n_channels
,
int
sample_rate
,
int
bit_depth
);
bool
load
(
const
std
::
string
&
filename
);
bool
save
(
const
std
::
string
&
filename
);
float
mix_freq
()
const
;
int
sample_rate
()
const
;
int
bit_depth
()
const
;
const
char
*
error_blurb
()
const
;
...
...
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