-
Notifications
You must be signed in to change notification settings - Fork 0
/
mediaprocessor.h
139 lines (121 loc) · 3.44 KB
/
mediaprocessor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*
* If not stated otherwise in this file or this component's license file the
* following copyright and licenses apply:
*
* Copyright 2019 RDK Management
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file mediaprocessor.h
* @brief Header file for base class of media container processor
*/
#ifndef __MEDIA_PROCESSOR_H__
#define __MEDIA_PROCESSOR_H__
#include <stddef.h>
/**
* @enum _PlayMode
* @brief Defines the parameters required for Recording Playback
*/
typedef enum _PlayMode
{
PlayMode_normal, /**< Playing a recording in normal mode */
PlayMode_retimestamp_IPB, /**< Playing with I-Frame, P-Frame and B-Frame */
PlayMode_retimestamp_IandP, /**< Playing with I-Frame and P-Frame */
PlayMode_retimestamp_Ionly, /**< Playing a recording with I-Frame only */
PlayMode_reverse_GOP, /**< Playing a recording with rewind mode */
} PlayMode;
/**
* @class MediaProcessor
* @brief Base Class for Media Container Processor
*/
class MediaProcessor
{
public:
/**
* @brief MediaProcessor constructor
*/
MediaProcessor()
{
}
/**
* @brief MediaProcessor destructor
*/
virtual ~MediaProcessor()
{
}
MediaProcessor(const MediaProcessor&) = delete;
MediaProcessor& operator=(const MediaProcessor&) = delete;
/**
* @fn sendSegment
*
* @param[in] segment - fragment buffer pointer
* @param[in] size - fragment buffer size
* @param[in] position - position of fragment
* @param[in] duration - duration of fragment
* @param[in] discontinuous - true if discontinuous fragment
* @param[out] ptsError - flag indicates if any PTS error occurred
* @return true if fragment was sent, false otherwise
*/
virtual bool sendSegment( char *segment, size_t& size, double position, double duration, bool discontinuous, bool &ptsError) = 0;
/**
* @brief Set playback rate
*
* @param[in] rate - playback rate
* @param[in] mode - playback mode
* @return void
*/
virtual void setRate(double rate, PlayMode mode) = 0;
/**
* @brief Enable or disable throttle
*
* @param[in] enable - throttle enable/disable
* @return void
*/
virtual void setThrottleEnable(bool enable) = 0;
/**
* @brief Set frame rate for trickmode
*
* @param[in] frameRate - rate per second
* @return void
*/
virtual void setFrameRateForTM (int frameRate) = 0;
/**
* @brief Abort all operations
*
* @return void
*/
virtual void abort() = 0;
/**
* @brief Reset all variables
*
* @return void
*/
virtual void reset() = 0;
/**
* @fn Change Muxed Audio Track
* @param[in] AudioTrackIndex
*/
virtual void ChangeMuxedAudioTrack(unsigned char index){};
/**
* @brief Function to set the group-ID
* @param[in] string - id
*/
virtual void SetAudioGroupId(std::string& id){};
/**
* @brief Function to set a offsetflag. if the value is fasle, no need to apply offset while doing pts restamping
* @param[in] bool - true/false
*/
virtual void setApplyOffsetFlag(bool enable){};
};
#endif /* __MEDIA_PROCESSOR_H__ */