/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * 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.
 */
package android.hardware.cas@1.0;

import android.hardware.cas@1.0::types;

/**
 * IDescramblerBase is the API to control the descrambler and is accessible
 * from both Java and native level.
 */

interface IDescramblerBase {
    /**
     * Associate a MediaCas session with this MediaDescrambler instance.
     *
     * @param sessionId the id of the session to associate with this descrambler instance.
     * @return status the status of the call.
     */
    setMediaCasSession(HidlCasSessionId sessionId) generates (Status status);

    /**
     * Query if the scrambling scheme requires the use of a secure decoder
     * to decode data of the given mime type.
     *
     * @param mime the mime type of the media data.
     * @return result whether the descrambler requires a secure decoder.
     */
    requiresSecureDecoderComponent(string mime) generates (bool result);

    /**
     * Release the descrambler instance.
     *
     * @return status the status of the call.
     */
    release() generates (Status status);
};