summaryrefslogtreecommitdiffstats
path: root/dynamic-layers/chromium-browser-layer/recipes-browser/chromium/chromium-ozone-wayland/0114-V4L2VDA-Set-OUTPUT-format-with-parsed-resolution-for.patch
blob: 6bde73d6d4cbe4fd24cc5d17e9bccf0328747736 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
From b37891b75a53061ce6bdaaab926c2b630f6c1a61 Mon Sep 17 00:00:00 2001
From: Hou Qi <qi.hou@nxp.com>
Date: Mon, 5 Sep 2022 12:23:04 +0800
Subject: [PATCH 14/17] V4L2VDA: Set OUTPUT format with parsed resolution for
 amphion

For VP8, VC1l, rv, Amphion needs to set correct resolution for OUTPUT
queue as it will be added to amphion customized header.

Upstream-Status: Inappropriate [NXP specific]
---
 media/gpu/v4l2/v4l2_video_decode_accelerator.cc | 13 +++++++++++--
 media/gpu/v4l2/v4l2_video_decode_accelerator.h  |  2 +-
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/media/gpu/v4l2/v4l2_video_decode_accelerator.cc b/media/gpu/v4l2/v4l2_video_decode_accelerator.cc
index ff543f6865802..fba38c4021855 100644
--- a/media/gpu/v4l2/v4l2_video_decode_accelerator.cc
+++ b/media/gpu/v4l2/v4l2_video_decode_accelerator.cc
@@ -320,6 +320,9 @@ bool V4L2VideoDecodeAccelerator::CheckConfig(const Config& config) {
     return false;
   }
 
+  int width, height;
+  height = config.initial_expected_coded_size.height();
+  width = config.initial_expected_coded_size.width();
   // Capabilities check.
   struct v4l2_capability caps;
   unsigned int device_caps;
@@ -357,7 +360,7 @@ bool V4L2VideoDecodeAccelerator::CheckConfig(const Config& config) {
   if (!output_queue_)
     return false;
 
-  if (!SetupFormats())
+  if (!SetupFormats(width, height))
     return false;
 
   // We have confirmed that |config| is supported, tell the good news to the
@@ -2266,7 +2269,7 @@ bool V4L2VideoDecodeAccelerator::CreateInputBuffers() {
   return true;
 }
 
-bool V4L2VideoDecodeAccelerator::SetupFormats() {
+bool V4L2VideoDecodeAccelerator::SetupFormats(int width, int height) {
   DCHECK(decoder_thread_.task_runner()->BelongsToCurrentThread());
   DCHECK_EQ(decoder_state_, kInitialized);
   DCHECK(!input_queue_->IsStreaming());
@@ -2306,6 +2309,12 @@ bool V4L2VideoDecodeAccelerator::SetupFormats() {
     format.fmt.pix_mp.pixelformat = input_format_fourcc_;
     format.fmt.pix_mp.plane_fmt[0].sizeimage = input_size;
     format.fmt.pix_mp.num_planes = 1;
+    // For VP8, VC1l, rv, Amphion needs to set correct resolution for
+    // OUTPUT queue as it will be added to amphion customized header.
+    if(V4L2_PIX_FMT_VP8 == input_format_fourcc_){
+      format.fmt.pix_mp.width = width;
+      format.fmt.pix_mp.height = height;
+    }
   } else {
     format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
     format.fmt.pix.pixelformat = input_format_fourcc_;
diff --git a/media/gpu/v4l2/v4l2_video_decode_accelerator.h b/media/gpu/v4l2/v4l2_video_decode_accelerator.h
index 163907129a095..d16ee5857785b 100644
--- a/media/gpu/v4l2/v4l2_video_decode_accelerator.h
+++ b/media/gpu/v4l2/v4l2_video_decode_accelerator.h
@@ -395,7 +395,7 @@ class MEDIA_GPU_EXPORT V4L2VideoDecodeAccelerator
   bool DestroyOutputBuffers();
 
   // Set input and output formats before starting decode.
-  bool SetupFormats();
+  bool SetupFormats(int, int);
   // Reset image processor and drop all processing frames.
   bool ResetImageProcessor();
 
-- 
2.17.1