| // 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; |
| } // namespace media |
| |
| namespace media { |
| |
| // 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 media::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 media::JpegParseResult& parse_result, |
| VASurfaceID va_surface); |
| |
| private: |
| DISALLOW_IMPLICIT_CONSTRUCTORS(VaapiJpegDecoder); |
| }; |
| |
| } // namespace media |
| |
| #endif // MEDIA_GPU_VAAPI_JPEG_DECODER_H_ |