mirror of https://github.com/RPCS3/rpcs3.git
recording: rename audio_sample to audio_frame
This commit is contained in:
parent
d27d021913
commit
434a63a98a
|
@ -1170,15 +1170,15 @@ namespace utils
|
||||||
s64 last_video_pts = -1;
|
s64 last_video_pts = -1;
|
||||||
|
|
||||||
// Allocate audio buffer for our audio frame
|
// Allocate audio buffer for our audio frame
|
||||||
std::vector<u8> audio_samples;
|
std::vector<u8> audio_frame;
|
||||||
u32 audio_samples_sample_count = 0;
|
u32 audio_frame_sample_count = 0;
|
||||||
const bool sample_fmt_is_planar = av.audio.context && av_sample_fmt_is_planar(av.audio.context->sample_fmt) != 0;
|
const bool sample_fmt_is_planar = av.audio.context && av_sample_fmt_is_planar(av.audio.context->sample_fmt) != 0;
|
||||||
const int sample_fmt_bytes = av.audio.context ? av_get_bytes_per_sample(av.audio.context->sample_fmt) : 0;
|
const int sample_fmt_bytes = av.audio.context ? av_get_bytes_per_sample(av.audio.context->sample_fmt) : 0;
|
||||||
ensure(sample_fmt_bytes == sizeof(f32)); // We only support FLT or FLTP for now
|
ensure(sample_fmt_bytes == sizeof(f32)); // We only support FLT or FLTP for now
|
||||||
|
|
||||||
if (av.audio.frame)
|
if (av.audio.frame)
|
||||||
{
|
{
|
||||||
audio_samples.resize(av.audio.frame->nb_samples * av.audio.frame->ch_layout.nb_channels * sizeof(f32));
|
audio_frame.resize(av.audio.frame->nb_samples * av.audio.frame->ch_layout.nb_channels * sizeof(f32));
|
||||||
last_audio_frame_pts -= av.audio.frame->nb_samples;
|
last_audio_frame_pts -= av.audio.frame->nb_samples;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1312,12 +1312,12 @@ namespace utils
|
||||||
|
|
||||||
const auto send_frame = [&]()
|
const auto send_frame = [&]()
|
||||||
{
|
{
|
||||||
if (audio_samples_sample_count < static_cast<u32>(av.audio.frame->nb_samples))
|
if (audio_frame_sample_count < static_cast<u32>(av.audio.frame->nb_samples))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
audio_samples_sample_count = 0;
|
audio_frame_sample_count = 0;
|
||||||
|
|
||||||
if (int err = av_frame_make_writable(av.audio.frame); err < 0)
|
if (int err = av_frame_make_writable(av.audio.frame); err < 0)
|
||||||
{
|
{
|
||||||
|
@ -1337,13 +1337,13 @@ namespace utils
|
||||||
|
|
||||||
for (int sample = 0; sample < samples; sample++)
|
for (int sample = 0; sample < samples; sample++)
|
||||||
{
|
{
|
||||||
dst[sample] = *reinterpret_cast<f32*>(&audio_samples[(sample * channels + ch) * sizeof(f32)]);
|
dst[sample] = *reinterpret_cast<f32*>(&audio_frame[(sample * channels + ch) * sizeof(f32)]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::memcpy(av.audio.frame->data[0], audio_samples.data(), audio_samples.size());
|
std::memcpy(av.audio.frame->data[0], audio_frame.data(), audio_frame.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
av.audio.frame->pts = last_audio_frame_pts + av.audio.frame->nb_samples;
|
av.audio.frame->pts = last_audio_frame_pts + av.audio.frame->nb_samples;
|
||||||
|
@ -1373,14 +1373,14 @@ namespace utils
|
||||||
// Copy as many old samples to our audio frame as possible
|
// Copy as many old samples to our audio frame as possible
|
||||||
if (leftover_sample_count > 0)
|
if (leftover_sample_count > 0)
|
||||||
{
|
{
|
||||||
const u32 samples_to_add = std::min(leftover_sample_count, av.audio.frame->nb_samples - audio_samples_sample_count);
|
const u32 samples_to_add = std::min(leftover_sample_count, av.audio.frame->nb_samples - audio_frame_sample_count);
|
||||||
|
|
||||||
if (samples_to_add > 0)
|
if (samples_to_add > 0)
|
||||||
{
|
{
|
||||||
const u8* src = &last_samples.data[(last_samples.sample_count - leftover_sample_count) * last_samples.channels * sizeof(f32)];
|
const u8* src = &last_samples.data[(last_samples.sample_count - leftover_sample_count) * last_samples.channels * sizeof(f32)];
|
||||||
u8* dst = &audio_samples[audio_samples_sample_count * last_samples.channels * sizeof(f32)];
|
u8* dst = &audio_frame[audio_frame_sample_count * last_samples.channels * sizeof(f32)];
|
||||||
copy_samples<f32>(src, dst, samples_to_add * last_samples.channels, swap_endianness);
|
copy_samples<f32>(src, dst, samples_to_add * last_samples.channels, swap_endianness);
|
||||||
audio_samples_sample_count += samples_to_add;
|
audio_frame_sample_count += samples_to_add;
|
||||||
leftover_sample_count -= samples_to_add;
|
leftover_sample_count -= samples_to_add;
|
||||||
update_last_pts(samples_to_add);
|
update_last_pts(samples_to_add);
|
||||||
}
|
}
|
||||||
|
@ -1392,27 +1392,27 @@ namespace utils
|
||||||
}
|
}
|
||||||
else if (silence_to_add > 0)
|
else if (silence_to_add > 0)
|
||||||
{
|
{
|
||||||
const u32 samples_to_add = std::min<s32>(silence_to_add, av.audio.frame->nb_samples - audio_samples_sample_count);
|
const u32 samples_to_add = std::min<s32>(silence_to_add, av.audio.frame->nb_samples - audio_frame_sample_count);
|
||||||
|
|
||||||
if (samples_to_add > 0)
|
if (samples_to_add > 0)
|
||||||
{
|
{
|
||||||
u8* dst = &audio_samples[audio_samples_sample_count * av.audio.frame->ch_layout.nb_channels * sizeof(f32)];
|
u8* dst = &audio_frame[audio_frame_sample_count * av.audio.frame->ch_layout.nb_channels * sizeof(f32)];
|
||||||
std::memset(dst, 0, samples_to_add * sample_data.channels * sizeof(f32));
|
std::memset(dst, 0, samples_to_add * sample_data.channels * sizeof(f32));
|
||||||
audio_samples_sample_count += samples_to_add;
|
audio_frame_sample_count += samples_to_add;
|
||||||
update_last_pts(samples_to_add);
|
update_last_pts(samples_to_add);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (add_new_sample)
|
else if (add_new_sample)
|
||||||
{
|
{
|
||||||
// Copy as many new samples to our audio frame as possible
|
// Copy as many new samples to our audio frame as possible
|
||||||
const u32 samples_to_add = std::min<s32>(sample_data.sample_count, av.audio.frame->nb_samples - audio_samples_sample_count);
|
const u32 samples_to_add = std::min<s32>(sample_data.sample_count, av.audio.frame->nb_samples - audio_frame_sample_count);
|
||||||
|
|
||||||
if (samples_to_add > 0)
|
if (samples_to_add > 0)
|
||||||
{
|
{
|
||||||
const u8* src = sample_data.data.data();
|
const u8* src = sample_data.data.data();
|
||||||
u8* dst = &audio_samples[audio_samples_sample_count * sample_data.channels * sizeof(f32)];
|
u8* dst = &audio_frame[audio_frame_sample_count * sample_data.channels * sizeof(f32)];
|
||||||
copy_samples<f32>(src, dst, samples_to_add * sample_data.channels, swap_endianness);
|
copy_samples<f32>(src, dst, samples_to_add * sample_data.channels, swap_endianness);
|
||||||
audio_samples_sample_count += samples_to_add;
|
audio_frame_sample_count += samples_to_add;
|
||||||
update_last_pts(samples_to_add);
|
update_last_pts(samples_to_add);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue