blob: 77865b62a41f2044d8f875edf19476ba91db1103 [file] [log] [blame]
// Copyright 2015 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.
#ifndef MEDIA_GPU_VAAPI_JPEG_DECODER_H_
#define MEDIA_GPU_VAAPI_JPEG_DECODER_H_
#include "base/macros.h"
#include "media/gpu/media_gpu_export.h"
#include "media/gpu/vaapi_wrapper.h"
namespace media {
struct JpegParseResult;
// A JPEG decoder that utilizes VA-API hardware video decode acceleration on
// Intel systems. Provides functionality to allow plugging VAAPI HW
// acceleration into the JpegDecodeAccelerator framework.
//
// Clients of this class are expected to manage VA surfaces created via
// VaapiWrapper, parse JPEG picture via ParseJpegPicture, and then pass
// them to this class.
class MEDIA_GPU_EXPORT VaapiJpegDecoder {
public:
// Decode a JPEG picture. It will fill VA-API parameters and call
// corresponding VA-API methods according to parsed JPEG result
// |parse_result|. Decoded data will be outputted to the given |va_surface|.
// Return false on failure.
// |vaapi_wrapper| should be initialized in kDecode mode with
// VAProfileJPEGBaseline profile.
// |va_surface| should be created with size at least as large as the picture
// size.
static bool Decode(VaapiWrapper* vaapi_wrapper,
const JpegParseResult& parse_result,
VASurfaceID va_surface);
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(VaapiJpegDecoder);
};
} // namespace media
#endif // MEDIA_GPU_VAAPI_JPEG_DECODER_H_