blob: 276a137308670511ca9e4a3d928cfbf567a9ab72 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/services/media_gallery_util/media_parser_factory.h"
#include "base/allocator/buildflags.h"
#include "build/build_config.h"
#include "chrome/services/media_gallery_util/media_parser.h"
#include "media/base/media.h"
#include "media/media_buildflags.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#if defined(OS_ANDROID)
#include "chrome/services/media_gallery_util/media_parser_android.h"
#endif
MediaParserFactory::MediaParserFactory(
std::unique_ptr<service_manager::ServiceContextRef> service_ref)
: service_ref_(std::move(service_ref)) {}
MediaParserFactory::~MediaParserFactory() = default;
void MediaParserFactory::CreateMediaParser(int64_t libyuv_cpu_flags,
int64_t libavutil_cpu_flags,
CreateMediaParserCallback callback) {
media::InitializeMediaLibraryInSandbox(libyuv_cpu_flags, libavutil_cpu_flags);
chrome::mojom::MediaParserPtr media_parser_ptr;
std::unique_ptr<MediaParser> media_parser;
#if defined(OS_ANDROID)
media_parser = std::make_unique<MediaParserAndroid>(service_ref_->Clone());
#else
media_parser = std::make_unique<MediaParser>(service_ref_->Clone());
#endif
mojo::MakeStrongBinding(std::move(media_parser),
mojo::MakeRequest(&media_parser_ptr));
std::move(callback).Run(std::move(media_parser_ptr));
}