static int func_display_overlay_l(SDL_Vout *vout, SDL_VoutOverlay *overlay) { SDL_Vout_Opaque *opaque = vout->opaque; ANativeWindow *native_window = opaque->native_window; if (!native_window) { if (!opaque->null_native_window_warned) { opaque->null_native_window_warned = 1; ALOGW("voud_display_overlay_l: NULL native_window"); } return -1; } else { opaque->null_native_window_warned = 1; } if (!overlay) { ALOGE("voud_display_overlay_l: NULL overlay"); return -1; } if (overlay->w <= 0 || overlay->h <= 0) { ALOGE("voud_display_overlay_l: invalid overlay dimensions(%d, %d)", overlay->w, overlay->h); return -1; } switch(overlay->format) { case SDL_FCC__AMC: return SDL_VoutOverlayAMediaCodec_releaseFrame_l(overlay, NULL, true); default: return SDL_Android_NativeWindow_display_l(native_window, overlay); } }
static int func_display_overlay_l(SDL_Vout *vout, SDL_VoutOverlay *overlay) { SDL_Vout_Opaque *opaque = vout->opaque; ANativeWindow *native_window = opaque->native_window; if (!native_window) { if (!opaque->null_native_window_warned) { opaque->null_native_window_warned = 1; ALOGW("voud_display_overlay_l: NULL native_window"); } return -1; } else { opaque->null_native_window_warned = 1; } if (!overlay) { ALOGE("voud_display_overlay_l: NULL overlay"); return -1; } if (overlay->w <= 0 || overlay->h <= 0) { ALOGE("voud_display_overlay_l: invalid overlay dimensions(%d, %d)", overlay->w, overlay->h); return -1; } switch(overlay->format) { case SDL_FCC__AMC: { // only ANativeWindow support IJK_EGL_terminate(opaque->egl); return SDL_VoutOverlayAMediaCodec_releaseFrame_l(overlay, NULL, true); } case SDL_FCC_RV24: case SDL_FCC_I420: case SDL_FCC_I444P10LE: { // only GLES support if (opaque->egl) return IJK_EGL_display(opaque->egl, native_window, overlay); break; } case SDL_FCC_YV12: case SDL_FCC_RV16: case SDL_FCC_RV32: { // both GLES & ANativeWindow support if (vout->overlay_format == SDL_FCC__GLES2 && opaque->egl) return IJK_EGL_display(opaque->egl, native_window, overlay); break; } } // fallback to ANativeWindow IJK_EGL_terminate(opaque->egl); return SDL_Android_NativeWindow_display_l(native_window, overlay); }