1c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar/*
2c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar * Copyright 2015, The Android Open Source Project
3c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar *
4c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar * Licensed under the Apache License, Version 2.0 (the "License");
5c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar * you may not use this file except in compliance with the License.
6c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar * You may obtain a copy of the License at
7c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar *
8c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar *     http://www.apache.org/licenses/LICENSE-2.0
9c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar *
10c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar * Unless required by applicable law or agreed to in writing, software
11c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar * distributed under the License is distributed on an "AS IS" BASIS,
12c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar * See the License for the specific language governing permissions and
14c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar * limitations under the License.
15c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar */
16c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
172d61e2b97c92ac2de80ebb3782b728ae5cdf5306Wei Jia#ifndef _ANDROID_MEDIA_SYNC_PARAMS_H_
182d61e2b97c92ac2de80ebb3782b728ae5cdf5306Wei Jia#define _ANDROID_MEDIA_SYNC_PARAMS_H_
19c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
20c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar#include "jni.h"
21c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
2205ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar#include <media/stagefright/MediaSync.h>
2305ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar
24c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnarnamespace android {
25c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
262d61e2b97c92ac2de80ebb3782b728ae5cdf5306Wei Jiastruct SyncParams {
2705ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar    AVSyncSettings sync;
28c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar    float frameRate;
29c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
30c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar    bool syncSourceSet;
31c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar    bool audioAdjustModeSet;
32c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar    bool toleranceSet;
33c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar    bool frameRateSet;
34c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
35c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar    struct fields_t {
36c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jclass      clazz;
37c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jmethodID   constructID;
38c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
39c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jfieldID    sync_source;
40c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jfieldID    audio_adjust_mode;
41c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jfieldID    tolerance;
42c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jfieldID    frame_rate;
43c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jfieldID    set;
44c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jint        set_sync_source;
45c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jint        set_audio_adjust_mode;
46c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jint        set_tolerance;
47c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        jint        set_frame_rate;
48c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
49c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        // initializes fields
50c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        void init(JNIEnv *env);
51c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
52c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        // releases global references held
53c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar        void exit(JNIEnv *env);
54c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar    };
55c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
562d61e2b97c92ac2de80ebb3782b728ae5cdf5306Wei Jia    // fills this from an android.media.SyncParams object
572d61e2b97c92ac2de80ebb3782b728ae5cdf5306Wei Jia    void fillFromJobject(JNIEnv *env, const fields_t& fields, jobject params);
58c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
592d61e2b97c92ac2de80ebb3782b728ae5cdf5306Wei Jia    // returns this as a android.media.SyncParams object
60c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar    jobject asJobject(JNIEnv *env, const fields_t& fields);
61c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar};
62c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
63c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar}  // namespace android
64c98f58efd147c574faa4a4f9956b5ab95e3027a5Lajos Molnar
652d61e2b97c92ac2de80ebb3782b728ae5cdf5306Wei Jia#endif  // _ANDROID_MEDIA_SYNC_PARAMS_H_
66