Merge "seek expection handling bug" into tizen_2.2
[platform/framework/native/media.git] / inc / FMediaIVideoStreamFilter.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file                        FMediaIVideoStreamFilter.h
20  * @brief                       This is the header file for the %IVideoStreamFilter interface.
21  *
22  * This header file contains the declarations of the %IVideoStreamFilter interface.
23  */
24
25 #ifndef _FMEDIA_IVIDEO_STREAM_FILTER_H
26 #define _FMEDIA_IVIDEO_STREAM_FILTER_H
27
28 namespace Tizen { namespace Media
29 {
30 class VideoFrame;
31
32 /**
33  * @interface   IVideoStreamFilter
34  * @brief               This interface represents a filter that processes the video stream data.
35  *
36  * @since               2.1
37  *
38  * The %IVideoStreamFilter interface represents a filter that processes the video stream data.
39  *
40  */
41 class _OSP_EXPORT_ IVideoStreamFilter
42 {
43
44 public:
45         /**
46         * This polymorphic destructor should be overridden if required. This way, the destructors of the derived classes are called when
47         * the destructor of this interface is called.
48         *
49         * @since                2.1
50         */
51         virtual ~IVideoStreamFilter(void) {}
52
53         /**
54         *       Process a video frame.
55         *
56         * @since                2.1
57         *
58         * @param[in,out]        frame           A frame object containing the video frame data
59         * @remarks This method should not contain any operations that harm thread safety or cause performance degradation.
60         */
61         virtual void ProcessVideoStream(VideoFrame& frame) = 0;
62
63 protected:
64         //
65         // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application.
66         //
67         // This method is reserved and may change its name at any time without prior notice.
68         //
69         // @since               2.1
70         //
71         virtual void IVideoStreamFilter_Reserved1(void) {}
72
73         //
74         // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application.
75         //
76         // This method is reserved and may change its name at any time without prior notice.
77         //
78         // @since               2.1
79         //
80         virtual void IVideoStreamFilter_Reserved2(void) {}
81 };
82
83 }}// Tizen::Media
84
85 #endif