15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Utility functions for video testing. 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "media/base/video_frame.h" 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace media { 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace cast { 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Compute and return PSNR between two frames. 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)double I420PSNR(const scoped_refptr<media::VideoFrame>& frame1, 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const scoped_refptr<media::VideoFrame>& frame2); 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Populate a video frame with values starting with the given start value. 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Width, height and stride should be set in advance. 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Memory is allocated within the function. 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void PopulateVideoFrame(VideoFrame* frame, int start_value); 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Populate a video frame with noise. 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void PopulateVideoFrameWithNoise(VideoFrame* frame); 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Populate a video frame from a file. 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Returns true if frame was populated, false if not (EOF). 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool PopulateVideoFrameFromFile(VideoFrame* frame, FILE* video_file); 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace cast 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace media 30