| Index: media/tools/player_wtl/view.h
|
| diff --git a/media/tools/player_wtl/view.h b/media/tools/player_wtl/view.h
|
| index ce55c108326964adb8364dd6890f5937e376c162..60f91751d41e3751d9b3e917e741c83dedbae518 100644
|
| --- a/media/tools/player_wtl/view.h
|
| +++ b/media/tools/player_wtl/view.h
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved. Use of this
|
| // source code is governed by a BSD-style license that can be found in the
|
| // LICENSE file.
|
|
|
| @@ -9,7 +9,7 @@
|
| #include <process.h>
|
| #include <string.h>
|
|
|
| -#include "media/base/buffers.h"
|
| +#include "media/base/video_frame.h"
|
| #include "media/base/yuv_convert.h"
|
| #include "media/tools/player_wtl/movie.h"
|
| #include "media/tools/player_wtl/player_wtl.h"
|
| @@ -121,10 +121,7 @@ class WtlVideoWindow : public CScrollWindowImpl<WtlVideoWindow> {
|
| }
|
|
|
| // Convert the video frame to RGB and Blit.
|
| - void ConvertFrame(media::VideoFrame * video_frame) {
|
| - media::VideoSurface frame_in;
|
| - bool lock_result = video_frame->Lock(&frame_in);
|
| - DCHECK(lock_result);
|
| + void ConvertFrame(media::VideoFrame* video_frame) {
|
| BITMAP bm;
|
| bmp_.GetBitmap(&bm);
|
| int dibwidth = bm.bmWidth;
|
| @@ -133,11 +130,11 @@ class WtlVideoWindow : public CScrollWindowImpl<WtlVideoWindow> {
|
| uint8 *movie_dib_bits = reinterpret_cast<uint8 *>(bm.bmBits) +
|
| bm.bmWidthBytes * (bm.bmHeight - 1);
|
| int dibrowbytes = -bm.bmWidthBytes;
|
| - int clipped_width = frame_in.width;
|
| + int clipped_width = video_frame->width();
|
| if (dibwidth < clipped_width) {
|
| clipped_width = dibwidth;
|
| }
|
| - int clipped_height = frame_in.height;
|
| + int clipped_height = video_frame->height();
|
| if (dibheight < clipped_height) {
|
| clipped_height = dibheight;
|
| }
|
| @@ -186,7 +183,7 @@ class WtlVideoWindow : public CScrollWindowImpl<WtlVideoWindow> {
|
| // Append each frame to end of file.
|
| bool enable_dump_yuv_file = media::Movie::get()->GetDumpYuvFileEnable();
|
| if (enable_dump_yuv_file) {
|
| - DumpYUV(frame_in);
|
| + DumpYUV(video_frame);
|
| }
|
|
|
| #ifdef TESTING
|
| @@ -196,7 +193,7 @@ class WtlVideoWindow : public CScrollWindowImpl<WtlVideoWindow> {
|
| bool enable_draw = media::Movie::get()->GetDrawEnable();
|
| if (enable_draw) {
|
| DCHECK(bm.bmBitsPixel == 32);
|
| - DrawYUV(frame_in,
|
| + DrawYUV(video_frame,
|
| movie_dib_bits,
|
| dibrowbytes,
|
| clipped_width,
|
| @@ -344,38 +341,39 @@ class WtlVideoWindow : public CScrollWindowImpl<WtlVideoWindow> {
|
|
|
| // Draw a frame of YUV to an RGB buffer with scaling.
|
| // Handles different YUV formats.
|
| - void DrawYUV(const media::VideoSurface &frame_in,
|
| + void DrawYUV(const media::VideoFrame* video_frame,
|
| uint8 *movie_dib_bits,
|
| int dibrowbytes,
|
| int clipped_width,
|
| int clipped_height,
|
| int scaled_width,
|
| int scaled_height) {
|
| - media::YUVType yuv_type = (frame_in.format == media::VideoSurface::YV12) ?
|
| - media::YV12 : media::YV16;
|
| + media::YUVType yuv_type =
|
| + (video_frame->format() == media::VideoFrame::YV12) ?
|
| + media::YV12 : media::YV16;
|
|
|
| // Simple convert is not necessary for performance, but allows
|
| // easier alternative implementations.
|
| if ((view_rotate_ == media::ROTATE_0) && // Not scaled or rotated
|
| (view_size_ == 2)) {
|
| - media::ConvertYUVToRGB32(frame_in.data[0],
|
| - frame_in.data[1],
|
| - frame_in.data[2],
|
| + media::ConvertYUVToRGB32(video_frame->data(0),
|
| + video_frame->data(1),
|
| + video_frame->data(2),
|
| movie_dib_bits,
|
| scaled_width, scaled_height,
|
| - frame_in.strides[0],
|
| - frame_in.strides[1],
|
| + video_frame->stride(0),
|
| + video_frame->stride(1),
|
| dibrowbytes,
|
| yuv_type);
|
| } else {
|
| - media::ScaleYUVToRGB32(frame_in.data[0],
|
| - frame_in.data[1],
|
| - frame_in.data[2],
|
| + media::ScaleYUVToRGB32(video_frame->data(0),
|
| + video_frame->data(1),
|
| + video_frame->data(2),
|
| movie_dib_bits,
|
| clipped_width, clipped_height,
|
| scaled_width, scaled_height,
|
| - frame_in.strides[0],
|
| - frame_in.strides[1],
|
| + video_frame->stride(0),
|
| + video_frame->stride(1),
|
| dibrowbytes,
|
| yuv_type,
|
| view_rotate_);
|
| @@ -383,28 +381,30 @@ class WtlVideoWindow : public CScrollWindowImpl<WtlVideoWindow> {
|
| }
|
|
|
| // Diagnostic function to write out YUV in format compatible with PYUV tool.
|
| - void DumpYUV(const media::VideoSurface &frame_in) {
|
| + void DumpYUV(const media::VideoFrame* video_frame) {
|
| FILE * file_yuv = fopen("raw.yuv", "ab+"); // Open for append binary.
|
| if (file_yuv != NULL) {
|
| fseek(file_yuv, 0, SEEK_END);
|
| - const size_t frame_size = frame_in.width * frame_in.height;
|
| - for (size_t y = 0; y < frame_in.height; ++y)
|
| - fwrite(frame_in.data[0]+frame_in.strides[0]*y,
|
| - frame_in.width, sizeof(uint8), file_yuv);
|
| - for (size_t y = 0; y < frame_in.height/2; ++y)
|
| - fwrite(frame_in.data[1]+frame_in.strides[1]*y,
|
| - frame_in.width/2, sizeof(uint8), file_yuv);
|
| - for (size_t y = 0; y < frame_in.height/2; ++y)
|
| - fwrite(frame_in.data[2]+frame_in.strides[2]*y,
|
| - frame_in.width/2, sizeof(uint8), file_yuv);
|
| + const size_t frame_size =
|
| + video_frame->width() * video_frame->height();
|
| + for (size_t y = 0; y < video_frame->height(); ++y)
|
| + fwrite(video_frame->data(0) + video_frame->stride(0)*y,
|
| + video_frame->width(), sizeof(uint8), file_yuv);
|
| + for (size_t y = 0; y < video_frame->height()/2; ++y)
|
| + fwrite(video_frame->data(1) + video_frame->stride(1)*y,
|
| + video_frame->width() / 2, sizeof(uint8), file_yuv);
|
| + for (size_t y = 0; y < video_frame->height()/2; ++y)
|
| + fwrite(video_frame->data(2) + video_frame->stride(2)*y,
|
| + video_frame->width() / 2, sizeof(uint8), file_yuv);
|
| fclose(file_yuv);
|
|
|
| #if TESTING
|
| static int frame_dump_count = 0;
|
| char outputbuf[512];
|
| _snprintf_s(outputbuf, sizeof(outputbuf), "yuvdump %4d %dx%d stride %d\n",
|
| - frame_dump_count, frame_in.width, frame_in.height,
|
| - frame_in.strides[0]);
|
| + frame_dump_count, video_frame->width(),
|
| + video_frame->height(),
|
| + video_frame->stride(0));
|
| OutputDebugStringA(outputbuf);
|
| ++frame_dump_count;
|
| #endif
|
|
|