mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-24 05:25:13 +00: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
Notes:
sideshowbarker
2024-07-17 04:41:05 +09:00
Author: https://github.com/thatoddmailbox Commit: https://github.com/LadybirdBrowser/ladybird/commit/e8b398ca34 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/402 Issue: https://github.com/LadybirdBrowser/ladybird/issues/220 Reviewed-by: https://github.com/ADKaster ✅
2 changed files with 61 additions and 5 deletions
|
@ -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…
Add table
Reference in a new issue