1 /*
2 * Software License Agreement (BSD License)
3 *
4 *  Copyright (c) 2011 Willow Garage, Inc.
5 *
6 *  All rights reserved.
7 *
8 *  Redistribution and use in source and binary forms, with or without
9 *  modification, are permitted provided that the following conditions
10 *  are met:
11 *
12 *   * Redistributions of source code must retain the above copyright
13 *     notice, this list of conditions and the following disclaimer.
14 *   * Redistributions in binary form must reproduce the above
15 *     copyright notice, this list of conditions and the following
16 *     disclaimer in the documentation and/or other materials provided
17 *     with the distribution.
18 *   * Neither the name of the copyright holder(s) nor the names of its
19 *     contributors may be used to endorse or promote products derived
20 *     from this software without specific prior written permission.
21 *
22 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25 *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27 *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28 *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30 *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32 *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 *  POSSIBILITY OF SUCH DAMAGE.
34 *
35 */
36 
37 #pragma once
38 
39 #include <pcl/pcl_config.h>
40 #include <pcl/pcl_macros.h>
41 
42 #include <pcl/io/image.h>
43 
44 namespace pcl
45 {
46   namespace io
47   {
48     /**
49     * @brief Concrete implementation of the interface Image for a YUV 422 image used by Primesense devices.
50     * @ingroup io
51     */
52     class PCL_EXPORTS ImageYUV422 : public pcl::io::Image
53     {
54       public:
55         ImageYUV422 (FrameWrapper::Ptr image_metadata);
56         ImageYUV422 (FrameWrapper::Ptr image_metadata, Timestamp timestamp);
57 
58         ~ImageYUV422 () noexcept;
59 
60         inline Encoding
getEncoding()61         getEncoding () const override
62         {
63           return (YUV422);
64         }
65 
66         void
67         fillRGB (unsigned width, unsigned height, unsigned char* rgb_buffer, unsigned rgb_line_step = 0) const override;
68 
69         void
70         fillGrayscale (unsigned width, unsigned height, unsigned char* gray_buffer, unsigned gray_line_step = 0) const override;
71 
72         bool
73         isResizingSupported (unsigned input_width, unsigned input_height, unsigned output_width, unsigned output_height) const override;
74     };
75 
76   } // namespace
77 }
78