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

Side by Side Diff: content/renderer/pepper/pepper_video_source_host.cc

Issue 663183002: ppapi: Change endianness in libyuv calls, from BGRA to ARGB (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: automatically detect endianness Created 6 years, 2 months 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "content/renderer/pepper/pepper_video_source_host.h" 5 #include "content/renderer/pepper/pepper_video_source_host.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/numerics/safe_conversions.h" 8 #include "base/numerics/safe_conversions.h"
9 #include "content/public/renderer/renderer_ppapi_host.h" 9 #include "content/public/renderer/renderer_ppapi_host.h"
10 #include "content/renderer/pepper/ppb_image_data_impl.h" 10 #include "content/renderer/pepper/ppb_image_data_impl.h"
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 const int vert_crop = frame->visible_rect().y(); 175 const int vert_crop = frame->visible_rect().y();
176 176
177 const uint8* src_y = frame->data(media::VideoFrame::kYPlane) + 177 const uint8* src_y = frame->data(media::VideoFrame::kYPlane) +
178 (src_width * vert_crop + horiz_crop); 178 (src_width * vert_crop + horiz_crop);
179 const int center = (src_width + 1) / 2; 179 const int center = (src_width + 1) / 2;
180 const uint8* src_u = frame->data(media::VideoFrame::kUPlane) + 180 const uint8* src_u = frame->data(media::VideoFrame::kUPlane) +
181 (center * vert_crop + horiz_crop) / 2; 181 (center * vert_crop + horiz_crop) / 2;
182 const uint8* src_v = frame->data(media::VideoFrame::kVPlane) + 182 const uint8* src_v = frame->data(media::VideoFrame::kVPlane) +
183 (center * vert_crop + horiz_crop) / 2; 183 (center * vert_crop + horiz_crop) / 2;
184 184
185 libyuv::I420ToBGRA(src_y, 185 libyuv::I420ToARGB(src_y,
186 frame->stride(media::VideoFrame::kYPlane), 186 frame->stride(media::VideoFrame::kYPlane),
187 src_u, 187 src_u,
188 frame->stride(media::VideoFrame::kUPlane), 188 frame->stride(media::VideoFrame::kUPlane),
189 src_v, 189 src_v,
190 frame->stride(media::VideoFrame::kVPlane), 190 frame->stride(media::VideoFrame::kVPlane),
191 bitmap_pixels, 191 bitmap_pixels,
192 bitmap->rowBytes(), 192 bitmap->rowBytes(),
193 dst_width, 193 dst_width,
194 dst_height); 194 dst_height);
195 // Give an imperceptible hint about endianness in the first pixel. The alpha
196 // channel is always 255, if B is 255 as well, change it to 254.
197 if (bitmap_pixels[0] == 255)
198 bitmap_pixels[0] = 254;
195 199
196 ppapi::HostResource host_resource; 200 ppapi::HostResource host_resource;
197 host_resource.SetHostResource(pp_instance(), resource.get()); 201 host_resource.SetHostResource(pp_instance(), resource.get());
198 202
199 // Convert a video timestamp to a PP_TimeTicks (a double, in seconds). 203 // Convert a video timestamp to a PP_TimeTicks (a double, in seconds).
200 PP_TimeTicks timestamp = frame->timestamp().InSecondsF(); 204 PP_TimeTicks timestamp = frame->timestamp().InSecondsF();
201 205
202 ppapi::proxy::SerializedHandle serialized_handle; 206 ppapi::proxy::SerializedHandle serialized_handle;
203 serialized_handle.set_shmem(image_handle, byte_count); 207 serialized_handle.set_shmem(image_handle, byte_count);
204 reply_context_.params.AppendHandle(serialized_handle); 208 reply_context_.params.AppendHandle(serialized_handle);
(...skipping 19 matching lines...) Expand all
224 228
225 void PepperVideoSourceHost::Close() { 229 void PepperVideoSourceHost::Close() {
226 if (source_handler_.get() && !stream_url_.empty()) 230 if (source_handler_.get() && !stream_url_.empty())
227 source_handler_->Close(frame_receiver_.get()); 231 source_handler_->Close(frame_receiver_.get());
228 232
229 source_handler_.reset(NULL); 233 source_handler_.reset(NULL);
230 stream_url_.clear(); 234 stream_url_.clear();
231 } 235 }
232 236
233 } // namespace content 237 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698