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