LibMedia: Add a stub implementation of FFmpegVideoDecoder for Android

We don't have ffmpeg available on Android, so provide a dummy
FFmpegVideoDecoder and disable linking against ffmpeg for Android.
This commit is contained in:
Alex Studer 2024-07-03 15:55:30 -04:00 committed by Andrew Kaster
parent ebc92dee93
commit e8b398ca34
2 changed files with 61 additions and 5 deletions

View File

@ -4,15 +4,22 @@ set(SOURCES
Color/TransferCharacteristics.cpp
Containers/Matroska/MatroskaDemuxer.cpp
Containers/Matroska/Reader.cpp
FFmpeg/FFmpegVideoDecoder.cpp
PlaybackManager.cpp
VideoFrame.cpp
)
if (NOT ANDROID)
list(APPEND SOURCES FFmpeg/FFmpegVideoDecoder.cpp)
else()
list(APPEND SOURCES FFmpeg/FFmpegVideoDecoderStub.cpp)
endif()
serenity_lib(LibMedia media)
target_link_libraries(LibMedia PRIVATE LibCore LibIPC LibGfx LibThreading)
# Third-party
find_package(PkgConfig REQUIRED)
pkg_check_modules(AVCODEC REQUIRED IMPORTED_TARGET libavcodec)
target_link_libraries(LibMedia PRIVATE PkgConfig::AVCODEC)
if (NOT ANDROID)
# Third-party
find_package(PkgConfig REQUIRED)
pkg_check_modules(AVCODEC REQUIRED IMPORTED_TARGET libavcodec)
target_link_libraries(LibMedia PRIVATE PkgConfig::AVCODEC)
endif()

View File

@ -0,0 +1,49 @@
/*
* Copyright (c) 2024, Alex Studer <alex@studer.dev>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibCore/System.h>
#include <LibMedia/VideoFrame.h>
#include "FFmpegForward.h"
#include "FFmpegVideoDecoder.h"
namespace Media::FFmpeg {
DecoderErrorOr<NonnullOwnPtr<FFmpegVideoDecoder>> FFmpegVideoDecoder::try_create(CodecID codec_id, ReadonlyBytes codec_initialization_data)
{
(void)codec_id;
(void)codec_initialization_data;
return DecoderError::format(DecoderErrorCategory::NotImplemented, "FFmpeg not available on this platform");
}
FFmpegVideoDecoder::FFmpegVideoDecoder(AVCodecContext* codec_context, AVPacket* packet, AVFrame* frame)
: m_codec_context(codec_context)
, m_packet(packet)
, m_frame(frame)
{
}
FFmpegVideoDecoder::~FFmpegVideoDecoder()
{
}
DecoderErrorOr<void> FFmpegVideoDecoder::receive_sample(Duration timestamp, ReadonlyBytes sample)
{
(void)timestamp;
(void)sample;
return DecoderError::format(DecoderErrorCategory::NotImplemented, "FFmpeg not available on this platform");
}
DecoderErrorOr<NonnullOwnPtr<VideoFrame>> FFmpegVideoDecoder::get_decoded_frame()
{
return DecoderError::format(DecoderErrorCategory::NotImplemented, "FFmpeg not available on this platform");
}
void FFmpegVideoDecoder::flush()
{
}
}