1bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
2bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeINTEL CONFIDENTIAL
3bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeCopyright 2009 Intel Corporation All Rights Reserved.
4bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeThe source code contained or described herein and all documents related to the source code ("Material") are owned by Intel Corporation or its suppliers or licensors. Title to the Material remains with Intel Corporation or its suppliers and licensors. The Material contains trade secrets and proprietary and confidential information of Intel or its suppliers and licensors. The Material is protected by worldwide copyright and trade secret laws and treaty provisions. No part of the Material may be used, copied, reproduced, modified, published, uploaded, posted, transmitted, distributed, or disclosed in any way without Intel’s prior express written permission.
5bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
6bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeNo license under any patent, copyright, trade secret or other intellectual property right is granted to or conferred upon you by disclosure or delivery of the Materials, either expressly, by implication, inducement, estoppel or otherwise. Any license under such intellectual property rights must be express and approved by Intel in writing.
7bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
8bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
9bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef __MIX_VIDEOFRAME_PRIVATE_H__
10bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define __MIX_VIDEOFRAME_PRIVATE_H__
11bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
12bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#include "mixvideoframe.h"
13bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#include "mixsurfacepool.h"
14bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
15bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef enum _MixFrameType
16bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
17bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  TYPE_I,
18bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  TYPE_P,
19bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  TYPE_B,
20bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  TYPE_INVALID
21bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} MixFrameType;
22bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
23bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _MixVideoFramePrivate MixVideoFramePrivate;
24bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
25bd8388b4555645b3d29abc6a94c303638064d69awonjong.leestruct _MixVideoFramePrivate
26bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
27bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  /*< private > */
28bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MixSurfacePool *pool;
29bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MixFrameType frame_type;
30bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  gboolean is_skipped;
31bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  MixVideoFrame *real_frame;
32bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee  GStaticRecMutex lock;
33bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
34bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
35bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/**
36bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee* MIX_VIDEOFRAME_PRIVATE:
37bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*
38bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee* Get private structure of this class.
39bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee* @obj: class object for which to get private data.
40bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
41bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define MIX_VIDEOFRAME_GET_PRIVATE(obj)  \
42bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee   (G_TYPE_INSTANCE_GET_PRIVATE ((obj), MIX_TYPE_VIDEOFRAME, MixVideoFramePrivate))
43bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
44bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
45bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/* Private functions */
46bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT
47bd8388b4555645b3d29abc6a94c303638064d69awonjong.leemix_videoframe_set_pool (MixVideoFrame *obj, MixSurfacePool *pool);
48bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
49bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT
50bd8388b4555645b3d29abc6a94c303638064d69awonjong.leemix_videoframe_set_frame_type (MixVideoFrame *obj,  MixFrameType frame_type);
51bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
52bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT
53bd8388b4555645b3d29abc6a94c303638064d69awonjong.leemix_videoframe_get_frame_type (MixVideoFrame *obj,  MixFrameType *frame_type);
54bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
55bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT
56bd8388b4555645b3d29abc6a94c303638064d69awonjong.leemix_videoframe_set_is_skipped (MixVideoFrame *obj,  gboolean is_skipped);
57bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
58bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT
59bd8388b4555645b3d29abc6a94c303638064d69awonjong.leemix_videoframe_get_is_skipped (MixVideoFrame *obj,  gboolean *is_skipped);
60bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
61bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT
62bd8388b4555645b3d29abc6a94c303638064d69awonjong.leemix_videoframe_set_real_frame (MixVideoFrame *obj,  MixVideoFrame *real);
63bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
64bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeMIX_RESULT
65bd8388b4555645b3d29abc6a94c303638064d69awonjong.leemix_videoframe_get_real_frame (MixVideoFrame *obj,  MixVideoFrame **real);
66bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
67bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
68bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif /* __MIX_VIDEOFRAME_PRIVATE_H__ */
69