UNPKG

bitmovin-player-react-native

Version:

Official React Native bindings for Bitmovin's mobile Player SDKs.

96 lines 3.82 kB
import { NativeInstanceConfig } from '../nativeInstance'; /** * Configures the playback behaviour of the player. * * @remarks Platform: Android */ export interface DecoderConfig extends NativeInstanceConfig { /** * A callback interface for sorting and filtering decoders based on priority. * * This callback is invoked when the player selects a decoder, providing the {@link DecoderContext} * and a list of available {@link MediaCodecInfo} objects. The list is initially ordered by * the default priority in which decoders will be attempted. * * The callback should return a reordered or filtered list of {@link MediaCodecInfo} objects * that determines the selection priority. * * ## Example Usage * * ### Prefer a specific decoder for main content video playback * The following example prioritizes a specific decoder for non-ad video playback: * ```ts * const decoderPriorityProvider: DecoderPriorityProvider = { * overrideDecodersPriority: (context: DecoderContext, preferredDecoders: MediaCodecInfo[]): MediaCodecInfo[] => { * if (!context.isAd && context.mediaType === DecoderContextMediaType.VIDEO) { * // Prioritize a specific decoder * return preferredDecoders.sort((a, b) => { * const aAsNumber = a.name.startsWith("OMX.google.") ? 1 : 2 * const bAsNumber = b.name.startsWith("OMX.google.") ? 1 : 2 * return aAsNumber - bAsNumber * }) * } * return preferredDecoders * } * } * ``` * * ### Prefer software decoders for ads playback * The following example prioritizes software decoders over hardware decoders for ad playback: * ```ts * const decoderPriorityProvider: DecoderPriorityProvider = { * overrideDecodersPriority: (context: DecoderContext, preferredDecoders: MediaCodecInfo[]): MediaCodecInfo[] => { * if (context.isAd) { * // Prioritize a specific decoder * return preferredDecoders.sort((a, b) => { * const aAsNumber = a.isSoftware ? 1 : 2 * const bAsNumber = b.isSoftware ? 1 : 2 * return aAsNumber - bAsNumber * }) * } * return preferredDecoders * } * } * ``` * * ### Disable software fallback for video playback * The following example disables software decoders for non-ad video playback: * ```ts * const decoderPriorityProvider: DecoderPriorityProvider = { * overrideDecodersPriority: (context: DecoderContext, preferredDecoders: MediaCodecInfo[]): MediaCodecInfo[] => { * if (!context.isAd && context.mediaType === DecoderContextMediaType.VIDEO) { * // Prioritize a specific decoder * return preferredDecoders.filter((info) => { * return !info.isSoftware * }) * } * return preferredDecoders * } * } * ``` */ decoderPriorityProvider?: DecoderPriorityProvider | null; } /** * Can be set on the `DecoderConfig.decoderPriorityProvider` to override the default decoder selection logic. * See {@link DecoderConfig#decoderPriorityProvider} for more details * * @remarks Platform: Android * */ export interface DecoderPriorityProvider { overrideDecodersPriority: (context: DecoderContext, preferredDecoders: MediaCodecInfo[]) => MediaCodecInfo[]; } /** The context in which a new decoder is chosen. */ export interface DecoderContext { mediaType: DecoderContextMediaType; isAd: boolean; } export interface MediaCodecInfo { name: string; isSoftware: boolean; } export declare enum DecoderContextMediaType { AUDIO = "Audio", VIDEO = "Video" } //# sourceMappingURL=decoderConfig.d.ts.map