static SDL_AMediaCodec *create_codec_l(JNIEnv *env, IJKFF_Pipenode *node) { IJKFF_Pipenode_Opaque *opaque = node->opaque; IJKFF_Pipeline *pipeline = opaque->pipeline; ijkmp_mediacodecinfo_context *mcc = &opaque->mcc; SDL_AMediaCodec *acodec = NULL; if (mcc->codec_name[0] || (ffpipeline_select_mediacodec(pipeline, mcc) && mcc->codec_name[0])) { acodec = SDL_AMediaCodecJava_createByCodecName(env, mcc->codec_name); if (acodec) { strncpy(opaque->acodec_name, mcc->codec_name, sizeof(opaque->acodec_name) / sizeof(*opaque->acodec_name)); opaque->acodec_name[sizeof(opaque->acodec_name) / sizeof(*opaque->acodec_name) - 1] = 0; int todo_notify_codec_name; } } #if 0 if (!acodec) acodec = SDL_AMediaCodecJava_createDecoderByType(env, mcc->mime_type); #endif if (acodec) { // QUIRK: always recreate MediaCodec for reconfigure opaque->quirk_reconfigure_with_new_codec = true; /*- if (0 == strncasecmp(mcc->codec_name, "OMX.TI.DUCATI1.", 15)) { opaque->quirk_reconfigure_with_new_codec = true; } */ } return acodec; }
static SDL_AMediaCodec *create_codec_l(JNIEnv *env, IJKFF_Pipenode *node) { IJKFF_Pipenode_Opaque *opaque = node->opaque; IJKFF_Pipeline *pipeline = opaque->pipeline; ijkmp_mediacodecinfo_context *mcc = &opaque->mcc; SDL_AMediaCodec *acodec = NULL; if (mcc->codec_name[0] || (ffpipeline_select_mediacodec(pipeline, mcc) && mcc->codec_name[0])) { acodec = SDL_AMediaCodecJava_createByCodecName(env, mcc->codec_name); if (acodec) { strncpy(opaque->acodec_name, mcc->codec_name, sizeof(opaque->acodec_name) / sizeof(*opaque->acodec_name)); opaque->acodec_name[sizeof(opaque->acodec_name) / sizeof(*opaque->acodec_name) - 1] = 0; } } #if 0 if (!acodec) acodec = SDL_AMediaCodecJava_createDecoderByType(env, mcc->mime_type); #endif if (acodec) { // QUIRK: always recreate MediaCodec for reconfigure opaque->quirk_reconfigure_with_new_codec = true; /*- if (0 == strncasecmp(mcc->codec_name, "OMX.TI.DUCATI1.", 15)) { opaque->quirk_reconfigure_with_new_codec = true; } */ /* delaying output makes it possible to correct frame order, hopefully */ if (0 == strncasecmp(mcc->codec_name, "OMX.TI.DUCATI1.", 15)) { /* this is the only acceptable value on Nexus S */ opaque->n_buf_out = 1; ALOGD("using buffered output for %s", mcc->codec_name); } } return acodec; }