Apollo
11.0
自动驾驶开放平台
compress_component.h
浏览该文件的文档.
1
/******************************************************************************
2
* Copyright 2017 The Apollo Authors. All Rights Reserved.
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*****************************************************************************/
16
17
#pragma once
18
19
#include <memory>
20
#include <utility>
21
#include <vector>
22
23
#include "
cyber/base/concurrent_object_pool.h
"
24
#include "
cyber/cyber.h
"
25
#include "modules/drivers/camera/proto/config.pb.h"
26
#include "modules/common_msgs/sensor_msgs/sensor_image.pb.h"
27
28
#ifdef __aarch64__
29
#include "NvJpegEncoder.h"
30
#include "NvBuffer.h"
31
#include "NvUtils.h"
32
#endif
33
34
namespace
apollo
{
35
namespace
drivers {
36
namespace
camera {
37
38
class
CompressComponent
:
public
apollo::cyber::Component
<
39
apollo::drivers::Image> {
40
public
:
41
bool
Init
()
override
;
42
bool
Proc
(
43
const
std::shared_ptr<apollo::drivers::Image>& image)
override
;
44
45
~CompressComponent
() {}
46
47
private
:
48
// std::shared_ptr<
49
// apollo::cyber::base::CCObjectPool<CompressedImage>> image_pool_;
50
std::shared_ptr<
51
apollo::cyber::Writer<CompressedImage>
> writer_ =
nullptr
;
52
apollo::drivers::camera::config::Config
config_;
53
uint width_;
54
uint height_;
55
56
#ifdef __aarch64__
57
int
YUV422ToYUV420(
char
* src,
char
* dst);
58
int
ReadBuffer(
char
* file_buffer, NvBuffer*
buffer
);
59
60
NvJPEGEncoder* jpegenc_;
61
int
buffer_size_;
62
std::shared_ptr<apollo::cyber::base::CCObjectPool<NvBuffer>> nvbuffer_pool_;
63
std::shared_ptr<apollo::cyber::base::CCObjectPool<std::pair<std::vector<char>, std::vector<unsigned char>>>> downsampled_image_pool_;
64
#endif
65
};
66
67
CYBER_REGISTER_COMPONENT
(CompressComponent)
68
}
// namespace camera
69
}
// namespace drivers
70
}
// namespace apollo
apollo::cyber::Component
Definition
component.h:60
apollo::cyber::Writer
Definition
writer.h:42
apollo::drivers::camera::CompressComponent
Definition
compress_component.h:39
apollo::drivers::camera::CompressComponent::Init
bool Init() override
Definition
compress_component.cc:43
apollo::drivers::camera::CompressComponent::~CompressComponent
~CompressComponent()
Definition
compress_component.h:45
apollo::drivers::camera::CompressComponent::Proc
bool Proc(const std::shared_ptr< apollo::drivers::Image > &image) override
CYBER_REGISTER_COMPONENT
#define CYBER_REGISTER_COMPONENT(name)
Definition
component.h:657
concurrent_object_pool.h
cyber.h
apollo
class register implement
Definition
arena_queue.h:37
apollo::drivers::camera::buffer
Definition
usb_cam.h:104
apollo::drivers::camera::config::Config
Definition
config.proto:17
modules
drivers
camera
compress_component.h