Skip to content

Commit

Permalink
chore: refine ffmpeg extensions (#598)
Browse files Browse the repository at this point in the history
  • Loading branch information
halajohn authored Jan 23, 2025
1 parent e9f7c6a commit b8587f2
Show file tree
Hide file tree
Showing 4,023 changed files with 338,282 additions and 168,457 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion packages/example_extensions/ffmpeg_demuxer/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{
"type": "system",
"name": "ffmpeg",
"version": "6.0.0"
"version": "7.1.0"
}
],
"api": {}
Expand Down
29 changes: 17 additions & 12 deletions packages/example_extensions/ffmpeg_demuxer/src/demuxer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ demuxer_t::demuxer_t(ten::ten_env_proxy_t *ten_env_proxy,
frame(av_frame_alloc()),
rotate_degree(0),
audio_sample_rate(0),
audio_channel_layout(0),
audio_channel_layout_mask(0),
audio_num_of_channels(0) {}

demuxer_t::~demuxer_t() {
Expand Down Expand Up @@ -375,9 +375,9 @@ AVCodecParameters *demuxer_t::get_audio_decoder_params() const {
}

bool demuxer_t::create_audio_converter(const AVFrame *frame,
uint64_t *out_channel_layout,
uint64_t *out_channel_layout_mask,
int *out_sample_rate) {
TEN_ASSERT(frame && out_channel_layout && out_sample_rate,
TEN_ASSERT(frame && out_channel_layout_mask && out_sample_rate,
"Invalid argument.");

if (audio_converter_ctx == nullptr) {
Expand All @@ -390,21 +390,25 @@ bool demuxer_t::create_audio_converter(const AVFrame *frame,
} else {
in_layout = frame->ch_layout;
}
uint64_t in_channel_layout = in_layout.u.mask;
uint64_t in_channel_layout_mask = in_layout.u.mask;

*out_channel_layout =
(audio_channel_layout != 0) ? audio_channel_layout : in_channel_layout;
*out_channel_layout_mask = (audio_channel_layout_mask != 0)
? audio_channel_layout_mask
: in_channel_layout_mask;

*out_sample_rate =
(audio_sample_rate != 0) ? audio_sample_rate : frame->sample_rate;

audio_converter_ctx = swr_alloc();
TEN_ASSERT(audio_converter_ctx, "Failed to create audio resampler");

av_opt_set_int(audio_converter_ctx, "in_channel_layout",
static_cast<int64_t>(in_channel_layout), 0);
av_opt_set_int(audio_converter_ctx, "out_channel_layout",
static_cast<int64_t>(*out_channel_layout), 0);
AVChannelLayout in_ch_layout;
av_channel_layout_from_mask(&in_ch_layout, in_channel_layout_mask);
av_opt_set_chlayout(audio_converter_ctx, "in_chlayout", &in_ch_layout, 0);

AVChannelLayout out_ch_layout;
av_channel_layout_from_mask(&out_ch_layout, *out_channel_layout_mask);
av_opt_set_chlayout(audio_converter_ctx, "out_chlayout", &out_ch_layout, 0);

av_opt_set_int(audio_converter_ctx, "in_sample_rate", frame->sample_rate,
0);
Expand Down Expand Up @@ -694,6 +698,7 @@ DECODE_STATUS demuxer_t::decode_next_packet() {
DECODE_STATUS decode_status = DECODE_STATUS_SUCCESS;

while (true) {
// Discard the previous handling packet.
av_packet_unref(packet);

interrupt_cb_param->last_time = time(nullptr);
Expand Down Expand Up @@ -1018,9 +1023,9 @@ void demuxer_t::open_audio_decoder() {
AVChannelLayout default_layout;
av_channel_layout_default(&default_layout, params->ch_layout.nb_channels);

audio_channel_layout = default_layout.u.mask;
audio_channel_layout_mask = default_layout.u.mask;
} else {
audio_channel_layout = params->ch_layout.u.mask;
audio_channel_layout_mask = params->ch_layout.u.mask;
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/example_extensions/ffmpeg_demuxer/src/demuxer.h
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ class demuxer_t {

// The audio format output by the demuxer.
int audio_sample_rate;
uint64_t audio_channel_layout;
uint64_t audio_channel_layout_mask;
int audio_num_of_channels;
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,8 @@ void demuxer_thread_t::reply_to_start_cmd(bool success) {

// Demuxer audio settings.
cmd_result->set_property("audio_sample_rate", demuxer->audio_sample_rate);
cmd_result->set_property("audio_channel_layout",
demuxer->audio_channel_layout);
cmd_result->set_property("audio_channel_layout_mask",
demuxer->audio_channel_layout_mask);
cmd_result->set_property("audio_num_of_channels",
demuxer->audio_num_of_channels);
cmd_result->set_property("audio_time_base_num",
Expand Down
2 changes: 1 addition & 1 deletion packages/example_extensions/ffmpeg_muxer/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{
"type": "system",
"name": "ffmpeg",
"version": "6.0.0"
"version": "7.1.0"
}
],
"api": {}
Expand Down
5 changes: 3 additions & 2 deletions packages/example_extensions/ffmpeg_muxer/src/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ demuxer_settings_t read_settings(cmd_t &cmd) {
auto num_of_frames = cmd.get_property_int64("num_of_frames");

auto audio_sample_rate = cmd.get_property_int32("audio_sample_rate");
auto audio_channel_layout = cmd.get_property_int64("audio_channel_layout");
auto audio_channel_layout_mask =
cmd.get_property_int64("audio_channel_layout_mask");

auto audio_time_base_num = cmd.get_property_int32("audio_time_base_num");
auto audio_time_base_den = cmd.get_property_int32("audio_time_base_den");
Expand All @@ -42,7 +43,7 @@ demuxer_settings_t read_settings(cmd_t &cmd) {
settings.src_video_frame_rate = frame_rate;
settings.src_video_time_base = video_time_base;
settings.src_audio_time_base = audio_time_base;
settings.src_audio_channel_layout = audio_channel_layout;
settings.src_audio_channel_layout_mask = audio_channel_layout_mask;

return settings;
}
Expand Down
Loading

0 comments on commit b8587f2

Please sign in to comment.