Commit 32d46f94 authored by moto's avatar moto Committed by Facebook GitHub Bot
Browse files

Add query methods to FilterGraph (#2976)

Summary:
This commit add methods to query output configuration from FilterGraph object.
* time_base -> required to compute PTS of output frame
* sample_rate, num_channels -> required to compute PTS and pre allocate buffers for audio.

Pull Request resolved: https://github.com/pytorch/audio/pull/2976

Reviewed By: xiaohui-zhang

Differential Revision: D42466744

Pulled By: mthrok

fbshipit-source-id: dd27109819bfb1fbe37b8233dd6a5e4224fe3f6c
parent 22788a8f
...@@ -167,6 +167,25 @@ void FilterGraph::create_filter() { ...@@ -167,6 +167,25 @@ void FilterGraph::create_filter() {
// av_free(static_cast<void*>(desc)); // av_free(static_cast<void*>(desc));
} }
//////////////////////////////////////////////////////////////////////////////
// Query methods
//////////////////////////////////////////////////////////////////////////////
AVRational FilterGraph::get_output_timebase() const {
TORCH_INTERNAL_ASSERT(buffersink_ctx, "FilterGraph is not initialized.");
return buffersink_ctx->inputs[0]->time_base;
}
int FilterGraph::get_output_sample_rate() const {
TORCH_INTERNAL_ASSERT(buffersink_ctx, "FilterGraph is not initialized.");
return buffersink_ctx->inputs[0]->sample_rate;
}
int FilterGraph::get_output_channels() const {
TORCH_INTERNAL_ASSERT(buffersink_ctx, "FilterGraph is not initialized.");
return av_get_channel_layout_nb_channels(
buffersink_ctx->inputs[0]->channel_layout);
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Streaming process // Streaming process
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
......
...@@ -49,6 +49,13 @@ class FilterGraph { ...@@ -49,6 +49,13 @@ class FilterGraph {
void create_filter(); void create_filter();
//////////////////////////////////////////////////////////////////////////////
// Query methods
//////////////////////////////////////////////////////////////////////////////
[[nodiscard]] AVRational get_output_timebase() const;
[[nodiscard]] int get_output_sample_rate() const;
[[nodiscard]] int get_output_channels() const;
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// Streaming process // Streaming process
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment