package com.omixlab.lckcontrol.shared;

import android.hardware.HardwareBuffer;
import android.os.ParcelFileDescriptor;
import com.omixlab.lckcontrol.shared.ILckStreamingCallback;

interface ILckStreamingService {
    // Texture pool (game allocates, app receives)
    void registerTexturePool(in HardwareBuffer[] buffers, int width, int height, int format);
    void unregisterTexturePool();

    // Frame submission (game -> app, one-way for performance)
    oneway void submitVideoFrame(int bufferIndex, long timestampNs, in ParcelFileDescriptor gpuFence);
    oneway void submitAudioFrame(in byte[] pcmData, long timestampNs, int sampleRate, int channels, int bitsPerSample);

    // Streaming lifecycle
    boolean isStreaming();

    // Callbacks
    void registerStreamingCallback(ILckStreamingCallback callback);
    void unregisterStreamingCallback(ILckStreamingCallback callback);
}
