aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDanila Malyutin <[email protected]>2023-07-18 03:01:49 +0400
committerDanila Malyutin <[email protected]>2023-08-28 00:48:53 +0400
commit164f880f2385c8c7e3498286eebb9ef4782674c3 (patch)
tree7c43786b3b2716f780d5717b64734797f4261c87
parentada4697300fce6a139bd78d548f151f9f4599ad3 (diff)
downloadyuzu-android-164f880f2385c8c7e3498286eebb9ef4782674c3.tar.gz
yuzu-android-164f880f2385c8c7e3498286eebb9ef4782674c3.zip
Use initial_frame to check interlaced flag
If final frame was transferred from GPU, it won't carry the props. Fixes #11089
-rw-r--r--externals/ffmpeg/CMakeLists.txt4
-rw-r--r--src/video_core/host1x/codecs/codec.cpp3
2 files changed, 4 insertions, 3 deletions
diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt
index 0a926e399..f2886eb6c 100644
--- a/externals/ffmpeg/CMakeLists.txt
+++ b/externals/ffmpeg/CMakeLists.txt
@@ -164,7 +164,7 @@ if (NOT WIN32 AND NOT ANDROID)
--enable-decoder=h264
--enable-decoder=vp8
--enable-decoder=vp9
- --enable-filter=yadif
+ --enable-filter=yadif,scale
--cc="${FFmpeg_CC}"
--cxx="${FFmpeg_CXX}"
${FFmpeg_HWACCEL_FLAGS}
@@ -254,7 +254,7 @@ elseif(ANDROID)
set(FFmpeg_INCLUDE_DIR "${FFmpeg_INCLUDE_DIR}" PARENT_SCOPE)
elseif(WIN32)
# Use yuzu FFmpeg binaries
- set(FFmpeg_EXT_NAME "ffmpeg-5.1.3")
+ set(FFmpeg_EXT_NAME "ffmpeg-6.0")
set(FFmpeg_PATH "${CMAKE_BINARY_DIR}/externals/${FFmpeg_EXT_NAME}")
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "")
set(FFmpeg_FOUND YES)
diff --git a/src/video_core/host1x/codecs/codec.cpp b/src/video_core/host1x/codecs/codec.cpp
index 220cce28a..8d7da50fc 100644
--- a/src/video_core/host1x/codecs/codec.cpp
+++ b/src/video_core/host1x/codecs/codec.cpp
@@ -319,6 +319,7 @@ void Codec::Decode() {
LOG_WARNING(Service_NVDRV, "Zero width or height in frame");
return;
}
+ bool is_interlaced = initial_frame->interlaced_frame != 0;
if (av_codec_ctx->hw_device_ctx) {
final_frame = AVFramePtr{av_frame_alloc(), AVFrameDeleter};
ASSERT_MSG(final_frame, "av_frame_alloc final_frame failed");
@@ -334,7 +335,7 @@ void Codec::Decode() {
UNIMPLEMENTED_MSG("Unexpected video format: {}", final_frame->format);
return;
}
- if (!final_frame->interlaced_frame) {
+ if (!is_interlaced) {
av_frames.push(std::move(final_frame));
} else {
if (!filters_initialized) {