nx_camera_sdk  1.0
Camera SDK
media_encoder.h
1 // Copyright 2018-present Network Optix, Inc. Licensed under MPL 2.0: www.mozilla.org/MPL/2.0/
2 
3 #ifndef RPI_MEDIA_ENCODER_H
4 #define RPI_MEDIA_ENCODER_H
5 
6 #include <memory>
7 
8 #include <camera/camera_plugin.h>
9 
10 #include "ref_counter.h"
11 #include "stream_reader.h"
12 
13 
14 namespace rpi_cam
15 {
16  class RPiCamera;
17 
19  class MediaEncoder : public DefaultRefCounter<nxcip::CameraMediaEncoder3>
20  {
21  public:
22  MediaEncoder(std::shared_ptr<RPiCamera> camera, unsigned encoderNumber);
23  virtual ~MediaEncoder();
24 
25  // nxpl::PluginInterface
26 
27  virtual void * queryInterface( const nxpl::NX_GUID& interfaceID ) override;
28 
29  // nxcip::CameraMediaEncoder
30 
31  virtual int getMediaUrl( char* urlBuf ) const override;
32  virtual int getResolutionList( nxcip::ResolutionInfo* infoList, int* infoListCount ) const override;
33  virtual int getMaxBitrate( int* maxBitrate ) const override;
34  virtual int setResolution( const nxcip::Resolution& resolution ) override;
35  virtual int setFps( const float&, float* selectedFps ) override;
36  virtual int setBitrate( int bitrateKbps, int* selectedBitrateKbps ) override;
37 
38  // nxcip::CameraMediaEncoder2
39 
40  virtual nxcip::StreamReader* getLiveStreamReader() override;
41  virtual int getAudioFormat( nxcip::AudioFormat* audioFormat ) const override;
42 
43  // nxcip::CameraMediaEncoder3
44 
45  virtual int getConfiguredLiveStreamReader(nxcip::LiveStreamConfig * config, nxcip::StreamReader ** reader) override;
46  virtual int getVideoFormat(nxcip::CompressionType * codec, nxcip::PixelFormat * pixelFormat) const override;
47 
48  private:
49  std::weak_ptr<RPiCamera> m_camera;
50  unsigned m_encoderNumber;
51  unsigned m_bitrateKbps;
52  };
53 }
54 
55 #endif
virtual int getVideoFormat(nxcip::CompressionType *codec, nxcip::PixelFormat *pixelFormat) const override
Returns video format. Optional method.
Definition: media_encoder.cpp:101
virtual int setFps(const float &, float *selectedFps) override
Definition: media_encoder.cpp:86
virtual int getMaxBitrate(int *maxBitrate) const override
Returns maximem bitrate in Kbps. 0 is interpreted as unlimited bitrate value.
Definition: media_encoder.cpp:75
virtual int setBitrate(int bitrateKbps, int *selectedBitrateKbps) override
Definition: media_encoder.cpp:91
Raspberry Pi camera unit and configuration.
Definition: camera_manager.cpp:21
Definition: camera_plugin.h:415
Contains resolution and maximum fps, supported by camera for this resolution.
Definition: camera_plugin.h:263
virtual int getAudioFormat(nxcip::AudioFormat *audioFormat) const override
Returns audio format, if audio is supported.
Definition: media_encoder.cpp:96
Definition: camera_plugin.h:345
Used for reading media stream from camera.
Definition: camera_plugin.h:1119
GUID of plugin interface.
Definition: plugin_api.h:26
Definition: media_encoder.h:19
Resolution of video stream picture.
Definition: camera_plugin.h:247
virtual nxcip::StreamReader * getLiveStreamReader() override
Returns stream reader, providing live data stream.
Definition: media_encoder.cpp:106
virtual void * queryInterface(const nxpl::NX_GUID &interfaceID) override
Cast to type, specified by interfaceID.
Definition: media_encoder.cpp:24
virtual int getConfiguredLiveStreamReader(nxcip::LiveStreamConfig *config, nxcip::StreamReader **reader) override
Returns configured stream reader, providing live data stream. Required method!
Definition: media_encoder.cpp:120
Definition: ref_counter.h:11
virtual int getResolutionList(nxcip::ResolutionInfo *infoList, int *infoListCount) const override
Returns supported resolution list.
Definition: media_encoder.cpp:50
virtual int getMediaUrl(char *urlBuf) const override
Returns url of media stream as NULL-terminated utf-8 string.
Definition: media_encoder.cpp:45
virtual int setResolution(const nxcip::Resolution &resolution) override
Change resolution on specified encoder.
Definition: media_encoder.cpp:81
PixelFormat
Definition: camera_plugin_types.h:33