chromium/media/capture/video/file_video_capture_device.h

// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_CAPTURE_VIDEO_FILE_VIDEO_CAPTURE_DEVICE_H_
#define MEDIA_CAPTURE_VIDEO_FILE_VIDEO_CAPTURE_DEVICE_H_

#include <stdint.h>

#include <memory>

#include "base/containers/queue.h"
#include "base/files/file.h"
#include "base/files/memory_mapped_file.h"
#include "base/threading/thread.h"
#include "base/threading/thread_checker.h"
#include "base/time/time.h"
#include "gpu/ipc/common/gpu_memory_buffer_support.h"
#include "media/capture/video/video_capture_device.h"

namespace media {

class VideoFileParser;

// Implementation of a VideoCaptureDevice class that reads from a file. Used for
// testing the video capture pipeline when no real hardware is available. The
// supported file formats are YUV4MPEG2 (a.k.a. Y4M) and MJPEG/JPEG. YUV4MPEG2
// is a minimal container with a series of uncompressed video only frames, see
// the link http://wiki.multimedia.cx/index.php?title=YUV4MPEG2 for more
// information on the file format. Several restrictions and notes apply, see the
// implementation file.
// Example Y4M videos can be found in http://media.xiph.org/video/derf.
// Example MJPEG videos can be found in media/test/data/bear.mjpeg.
// Restrictions: Y4M videos should have .y4m file extension and MJPEG videos
// should have .mjpeg file extension.
class CAPTURE_EXPORT FileVideoCaptureDevice : public VideoCaptureDevice {};

}  // namespace media

#endif  // MEDIA_CAPTURE_VIDEO_FILE_VIDEO_CAPTURE_DEVICE_H_