Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(382)

Side by Side Diff: media/cast/test/video_utility.cc

Issue 82593005: Cast: Switching recevier to use media::VideoFrame (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing includes Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/cast/test/video_utility.h ('k') | media/cast/video_receiver/codecs/vp8/vp8_decoder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <math.h> 5 #include <math.h>
6 #include <cstdio> 6 #include <cstdio>
7 7
8 #include "media/base/video_frame.h"
9 #include "media/cast/test/video_utility.h" 8 #include "media/cast/test/video_utility.h"
10 #include "third_party/libyuv/include/libyuv/compare.h" 9 #include "third_party/libyuv/include/libyuv/compare.h"
11 #include "ui/gfx/size.h" 10 #include "ui/gfx/size.h"
12 11
13 namespace media { 12 namespace media {
14 namespace cast { 13 namespace cast {
15 14
16 double I420PSNR(const I420VideoFrame& frame1, const I420VideoFrame& frame2) { 15 double I420PSNR(const scoped_refptr<media::VideoFrame>& frame1,
17 // Frames should have equal resolution. 16 const scoped_refptr<media::VideoFrame>& frame2) {
18 if (frame1.width != frame2.width || frame1.height != frame2.height) return -1; 17 if (frame1->coded_size().width() != frame2->coded_size().width() ||
19 return libyuv::I420Psnr(frame1.y_plane.data, frame1.y_plane.stride, 18 frame1->coded_size().height() != frame2->coded_size().height()) return -1;
20 frame1.u_plane.data, frame1.u_plane.stride,
21 frame1.v_plane.data, frame1.v_plane.stride,
22 frame2.y_plane.data, frame2.y_plane.stride,
23 frame2.u_plane.data, frame2.u_plane.stride,
24 frame2.v_plane.data, frame2.v_plane.stride,
25 frame1.width, frame1.height);
26 }
27
28 double I420PSNR(const VideoFrame& frame1, const I420VideoFrame& frame2) {
29 if (frame1.coded_size().width() != frame2.width ||
30 frame1.coded_size().height() != frame2.height) return -1;
31 19
32 return libyuv::I420Psnr( 20 return libyuv::I420Psnr(
33 frame1.data(VideoFrame::kYPlane), frame1.stride(VideoFrame::kYPlane), 21 frame1->data(VideoFrame::kYPlane), frame1->stride(VideoFrame::kYPlane),
34 frame1.data(VideoFrame::kUPlane), frame1.stride(VideoFrame::kUPlane), 22 frame1->data(VideoFrame::kUPlane), frame1->stride(VideoFrame::kUPlane),
35 frame1.data(VideoFrame::kVPlane), frame1.stride(VideoFrame::kVPlane), 23 frame1->data(VideoFrame::kVPlane), frame1->stride(VideoFrame::kVPlane),
36 frame2.y_plane.data, frame2.y_plane.stride, 24 frame2->data(VideoFrame::kYPlane), frame2->stride(VideoFrame::kYPlane),
37 frame2.u_plane.data, frame2.u_plane.stride, 25 frame2->data(VideoFrame::kUPlane), frame2->stride(VideoFrame::kUPlane),
38 frame2.v_plane.data, frame2.v_plane.stride, 26 frame2->data(VideoFrame::kVPlane), frame2->stride(VideoFrame::kVPlane),
39 frame2.width, frame2.height); 27 frame1->coded_size().width(), frame1->coded_size().height());
40 } 28 }
41 29
42 void PopulateVideoFrame(VideoFrame* frame, int start_value) { 30 void PopulateVideoFrame(VideoFrame* frame, int start_value) {
43 int width = frame->coded_size().width(); 31 int width = frame->coded_size().width();
44 int height = frame->coded_size().height(); 32 int height = frame->coded_size().height();
45 int half_width = (width + 1) / 2; 33 int half_width = (width + 1) / 2;
46 int half_height = (height + 1) / 2; 34 int half_height = (height + 1) / 2;
47 uint8* y_plane = frame->data(VideoFrame::kYPlane); 35 uint8* y_plane = frame->data(VideoFrame::kYPlane);
48 uint8* u_plane = frame->data(VideoFrame::kUPlane); 36 uint8* u_plane = frame->data(VideoFrame::kUPlane);
49 uint8* v_plane = frame->data(VideoFrame::kVPlane); 37 uint8* v_plane = frame->data(VideoFrame::kVPlane);
50 38
51 // Set Y. 39 // Set Y.
52 for (int i = 0; i < width * height; ++i) { 40 for (int i = 0; i < width * height; ++i) {
53 y_plane[i] = static_cast<uint8>(start_value + i); 41 y_plane[i] = static_cast<uint8>(start_value + i);
54 } 42 }
55 43
56 // Set U. 44 // Set U.
57 for (int i = 0; i < half_width * half_height; ++i) { 45 for (int i = 0; i < half_width * half_height; ++i) {
58 u_plane[i] = static_cast<uint8>(start_value + i); 46 u_plane[i] = static_cast<uint8>(start_value + i);
59 } 47 }
60 48
61 // Set V. 49 // Set V.
62 for (int i = 0; i < half_width * half_height; ++i) { 50 for (int i = 0; i < half_width * half_height; ++i) {
63 v_plane[i] = static_cast<uint8>(start_value + i); 51 v_plane[i] = static_cast<uint8>(start_value + i);
64 } 52 }
65 } 53 }
66 54
67 void PopulateVideoFrame(I420VideoFrame* frame, int start_value) {
68 int half_width = (frame->width + 1) / 2;
69 int half_height = (frame->height + 1) / 2;
70 frame->y_plane.stride = frame->width;
71 frame->y_plane.length = frame->width * frame->height;
72 frame->y_plane.data = new uint8[frame->y_plane.length];
73
74 frame->u_plane.stride = half_width;
75 frame->u_plane.length = half_width * half_height;
76 frame->u_plane.data = new uint8[frame->u_plane.length];
77
78 frame->v_plane.stride = half_width;
79 frame->v_plane.length = half_width * half_height;
80 frame->v_plane.data = new uint8[frame->v_plane.length];
81
82 // Set Y.
83 for (int i = 0; i < frame->y_plane.length; ++i) {
84 frame->y_plane.data[i] = static_cast<uint8>(start_value + i);
85 }
86
87 // Set U.
88 for (int i = 0; i < frame->u_plane.length; ++i) {
89 frame->u_plane.data[i] = static_cast<uint8>(start_value + i);
90 }
91
92 // Set V.
93 for (int i = 0; i < frame->v_plane.length; ++i) {
94 frame->v_plane.data[i] = static_cast<uint8>(start_value + i);
95 }
96 }
97
98 bool PopulateVideoFrameFromFile(VideoFrame* frame, FILE* video_file) { 55 bool PopulateVideoFrameFromFile(VideoFrame* frame, FILE* video_file) {
99 int width = frame->coded_size().width(); 56 int width = frame->coded_size().width();
100 int height = frame->coded_size().height(); 57 int height = frame->coded_size().height();
101 int half_width = (width + 1) / 2; 58 int half_width = (width + 1) / 2;
102 int half_height = (height + 1) / 2; 59 int half_height = (height + 1) / 2;
103 size_t frame_size = width * height + 2 * half_width * half_height; 60 size_t frame_size = width * height + 2 * half_width * half_height;
104 uint8* y_plane = frame->data(VideoFrame::kYPlane); 61 uint8* y_plane = frame->data(VideoFrame::kYPlane);
105 uint8* u_plane = frame->data(VideoFrame::kUPlane); 62 uint8* u_plane = frame->data(VideoFrame::kUPlane);
106 uint8* v_plane = frame->data(VideoFrame::kVPlane); 63 uint8* v_plane = frame->data(VideoFrame::kVPlane);
107 64
108 uint8* raw_data = new uint8[frame_size]; 65 uint8* raw_data = new uint8[frame_size];
109 size_t count = fread(raw_data, 1, frame_size, video_file); 66 size_t count = fread(raw_data, 1, frame_size, video_file);
110 if (count != frame_size) return false; 67 if (count != frame_size) return false;
111 68
112 memcpy(y_plane, raw_data, width * height); 69 memcpy(y_plane, raw_data, width * height);
113 memcpy(u_plane, raw_data + width * height, half_width * half_height); 70 memcpy(u_plane, raw_data + width * height, half_width * half_height);
114 memcpy(v_plane, raw_data + width * height + 71 memcpy(v_plane, raw_data + width * height +
115 half_width * half_height, half_width * half_height); 72 half_width * half_height, half_width * half_height);
116 delete [] raw_data; 73 delete [] raw_data;
117 return true; 74 return true;
118 } 75 }
119 76
120 } // namespace cast 77 } // namespace cast
121 } // namespace media 78 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/test/video_utility.h ('k') | media/cast/video_receiver/codecs/vp8/vp8_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698