blob: 7717b35c2c7f1fd2e9c997f104ed7078269b54fc [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use fidl::endpoints::*;
use fidl_fuchsia_media::*;
use fidl_fuchsia_mediacodec::*;
use fuchsia_component::client;
use futures::{
future::{self, BoxFuture},
FutureExt,
};
use stream_processor_test::*;
pub struct EncoderFactory;
impl StreamProcessorFactory for EncoderFactory {
fn connect_to_stream_processor(
&self,
stream: &dyn ElementaryStream,
format_details_version_ordinal: u64,
) -> BoxFuture<'_, Result<StreamProcessorProxy>> {
let get_encoder = || {
let factory = client::connect_to_service::<CodecFactoryMarker>()?;
let (encoder_client_end, encoder_request) = create_endpoints()?;
let encoder = encoder_client_end.into_proxy()?;
factory.create_encoder(
CreateEncoderParams {
input_details: Some(stream.format_details(format_details_version_ordinal)),
require_hw: Some(false),
..CreateEncoderParams::EMPTY
},
encoder_request,
)?;
Ok(encoder)
};
future::ready(get_encoder()).boxed()
}
}