mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-07-15 01:00:33 +03:00
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:
parent
ebc92dee93
commit
e8b398ca34
@ -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()
|
||||
|
@ -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()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user