Lines Matching refs:codec

1134 static int codec_init_static_fields(FFAMediaCodec *codec)
1139 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1141 codec->INFO_TRY_AGAIN_LATER = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.info_try_again_later_id);
1142 if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) {
1146 codec->BUFFER_FLAG_CODEC_CONFIG = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.buffer_flag_codec_config_id);
1147 if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) {
1151 codec->BUFFER_FLAG_END_OF_STREAM = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.buffer_flag_end_of_stream_id);
1152 if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) {
1156 if (codec->jfields.buffer_flag_key_frame_id) {
1157 codec->BUFFER_FLAG_KEY_FRAME = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.buffer_flag_key_frame_id);
1158 if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) {
1163 codec->CONFIGURE_FLAG_ENCODE = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.configure_flag_encode_id);
1164 if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) {
1168 codec->INFO_TRY_AGAIN_LATER = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.info_try_again_later_id);
1169 if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) {
1173 codec->INFO_OUTPUT_BUFFERS_CHANGED = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.info_output_buffers_changed_id);
1174 if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) {
1178 codec->INFO_OUTPUT_FORMAT_CHANGED = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.info_output_format_changed_id);
1179 if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) {
1196 FFAMediaCodec *codec = NULL;
1202 codec = av_mallocz(sizeof(FFAMediaCodec));
1203 if (!codec) {
1206 codec->class = &amediacodec_class;
1208 env = ff_jni_get_env(codec);
1210 av_freep(&codec);
1214 if (ff_jni_init_jfields(env, &codec->jfields, jni_amediacodec_mapping, 1, codec) < 0) {
1218 jarg = ff_jni_utf_chars_to_jstring(env, arg, codec);
1224 case CREATE_CODEC_BY_NAME: create_id = codec->jfields.create_by_codec_name_id; break;
1225 case CREATE_DECODER_BY_TYPE: create_id = codec->jfields.create_decoder_by_type_id; break;
1226 case CREATE_ENCODER_BY_TYPE: create_id = codec->jfields.create_encoder_by_type_id; break;
1232 codec->jfields.mediacodec_class,
1235 if (ff_jni_exception_check(env, 1, codec) < 0) {
1239 codec->object = (*env)->NewGlobalRef(env, object);
1240 if (!codec->object) {
1244 if (codec_init_static_fields(codec) < 0) {
1248 if (codec->jfields.get_input_buffer_id && codec->jfields.get_output_buffer_id) {
1249 codec->has_get_i_o_buffer = 1;
1252 buffer_info = (*env)->NewObject(env, codec->jfields.mediainfo_class, codec->jfields.init_id);
1253 if (ff_jni_exception_check(env, 1, codec) < 0) {
1257 codec->buffer_info = (*env)->NewGlobalRef(env, buffer_info);
1258 if (!codec->buffer_info) {
1277 if (codec->object) {
1278 (*env)->DeleteGlobalRef(env, codec->object);
1281 if (codec->buffer_info) {
1282 (*env)->DeleteGlobalRef(env, codec->buffer_info);
1285 ff_jni_reset_jfields(env, &codec->jfields, jni_amediacodec_mapping, 1, codec);
1286 av_freep(&codec);
1289 return codec;
1302 int ff_AMediaCodec_delete(FFAMediaCodec* codec)
1308 if (!codec) {
1312 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1314 (*env)->CallVoidMethod(env, codec->object, codec->jfields.release_id);
1315 if (ff_jni_exception_check(env, 1, codec) < 0) {
1319 (*env)->DeleteGlobalRef(env, codec->input_buffers);
1320 codec->input_buffers = NULL;
1322 (*env)->DeleteGlobalRef(env, codec->output_buffers);
1323 codec->output_buffers = NULL;
1325 (*env)->DeleteGlobalRef(env, codec->object);
1326 codec->object = NULL;
1328 (*env)->DeleteGlobalRef(env, codec->buffer_info);
1329 codec->buffer_info = NULL;
1331 ff_jni_reset_jfields(env, &codec->jfields, jni_amediacodec_mapping, 1, codec);
1333 av_freep(&codec);
1338 char *ff_AMediaCodec_getName(FFAMediaCodec *codec)
1344 JNI_GET_ENV_OR_RETURN(env, codec, NULL);
1346 name = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_name_id);
1347 if (ff_jni_exception_check(env, 1, codec) < 0) {
1351 ret = ff_jni_jstring_to_utf_chars(env, name, codec);
1361 int ff_AMediaCodec_configure(FFAMediaCodec* codec, const FFAMediaFormat* format, void* surface, void *crypto, uint32_t flags)
1366 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1368 (*env)->CallVoidMethod(env, codec->object, codec->jfields.configure_id, format->object, surface, NULL, flags);
1369 if (ff_jni_exception_check(env, 1, codec) < 0) {
1378 int ff_AMediaCodec_start(FFAMediaCodec* codec)
1383 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1385 (*env)->CallVoidMethod(env, codec->object, codec->jfields.start_id);
1386 if (ff_jni_exception_check(env, 1, codec) < 0) {
1395 int ff_AMediaCodec_stop(FFAMediaCodec* codec)
1400 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1402 (*env)->CallVoidMethod(env, codec->object, codec->jfields.stop_id);
1403 if (ff_jni_exception_check(env, 1, codec) < 0) {
1412 int ff_AMediaCodec_flush(FFAMediaCodec* codec)
1417 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1419 (*env)->CallVoidMethod(env, codec->object, codec->jfields.flush_id);
1420 if (ff_jni_exception_check(env, 1, codec) < 0) {
1429 int ff_AMediaCodec_releaseOutputBuffer(FFAMediaCodec* codec, size_t idx, int render)
1434 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1436 (*env)->CallVoidMethod(env, codec->object, codec->jfields.release_output_buffer_id, (jint)idx, (jboolean)render);
1437 if (ff_jni_exception_check(env, 1, codec) < 0) {
1446 int ff_AMediaCodec_releaseOutputBufferAtTime(FFAMediaCodec *codec, size_t idx, int64_t timestampNs)
1451 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1453 (*env)->CallVoidMethod(env, codec->object, codec->jfields.release_output_buffer_at_time_id, (jint)idx, (jlong)timestampNs);
1454 if (ff_jni_exception_check(env, 1, codec) < 0) {
1463 ssize_t ff_AMediaCodec_dequeueInputBuffer(FFAMediaCodec* codec, int64_t timeoutUs)
1468 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1470 ret = (*env)->CallIntMethod(env, codec->object, codec->jfields.dequeue_input_buffer_id, timeoutUs);
1471 if (ff_jni_exception_check(env, 1, codec) < 0) {
1480 int ff_AMediaCodec_queueInputBuffer(FFAMediaCodec* codec, size_t idx, off_t offset, size_t size, uint64_t time, uint32_t flags)
1485 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1487 (*env)->CallVoidMethod(env, codec->object, codec->jfields.queue_input_buffer_id, (jint)idx, (jint)offset, (jint)size, time, flags);
1488 if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) {
1497 ssize_t ff_AMediaCodec_dequeueOutputBuffer(FFAMediaCodec* codec, FFAMediaCodecBufferInfo *info, int64_t timeoutUs)
1502 JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
1504 ret = (*env)->CallIntMethod(env, codec->object, codec->jfields.dequeue_output_buffer_id, codec->buffer_info, timeoutUs);
1505 if (ff_jni_exception_check(env, 1, codec) < 0) {
1509 info->flags = (*env)->GetIntField(env, codec->buffer_info, codec->jfields.flags_id);
1510 if (ff_jni_exception_check(env, 1, codec) < 0) {
1514 info->offset = (*env)->GetIntField(env, codec->buffer_info, codec->jfields.offset_id);
1515 if (ff_jni_exception_check(env, 1, codec) < 0) {
1519 info->presentationTimeUs = (*env)->GetLongField(env, codec->buffer_info, codec->jfields.presentation_time_us_id);
1520 if (ff_jni_exception_check(env, 1, codec) < 0) {
1524 info->size = (*env)->GetIntField(env, codec->buffer_info, codec->jfields.size_id);
1525 if (ff_jni_exception_check(env, 1, codec) < 0) {
1532 uint8_t* ff_AMediaCodec_getInputBuffer(FFAMediaCodec* codec, size_t idx, size_t *out_size)
1540 JNI_GET_ENV_OR_RETURN(env, codec, NULL);
1542 if (codec->has_get_i_o_buffer) {
1543 buffer = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_input_buffer_id, (jint)idx);
1544 if (ff_jni_exception_check(env, 1, codec) < 0) {
1548 if (!codec->input_buffers) {
1549 input_buffers = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_input_buffers_id);
1550 if (ff_jni_exception_check(env, 1, codec) < 0) {
1554 codec->input_buffers = (*env)->NewGlobalRef(env, input_buffers);
1555 if (ff_jni_exception_check(env, 1, codec) < 0) {
1560 buffer = (*env)->GetObjectArrayElement(env, codec->input_buffers, idx);
1561 if (ff_jni_exception_check(env, 1, codec) < 0) {
1580 uint8_t* ff_AMediaCodec_getOutputBuffer(FFAMediaCodec* codec, size_t idx, size_t *out_size)
1588 JNI_GET_ENV_OR_RETURN(env, codec, NULL);
1590 if (codec->has_get_i_o_buffer) {
1591 buffer = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_output_buffer_id, (jint)idx);
1592 if (ff_jni_exception_check(env, 1, codec) < 0) {
1596 if (!codec->output_buffers) {
1597 output_buffers = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_output_buffers_id);
1598 if (ff_jni_exception_check(env, 1, codec) < 0) {
1602 codec->output_buffers = (*env)->NewGlobalRef(env, output_buffers);
1603 if (ff_jni_exception_check(env, 1, codec) < 0) {
1608 buffer = (*env)->GetObjectArrayElement(env, codec->output_buffers, idx);
1609 if (ff_jni_exception_check(env, 1, codec) < 0) {
1628 FFAMediaFormat* ff_AMediaCodec_getOutputFormat(FFAMediaCodec* codec)
1635 JNI_GET_ENV_OR_RETURN(env, codec, NULL);
1637 mediaformat = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_output_format_id);
1638 if (ff_jni_exception_check(env, 1, codec) < 0) {
1651 int ff_AMediaCodec_infoTryAgainLater(FFAMediaCodec *codec, ssize_t idx)
1653 return idx == codec->INFO_TRY_AGAIN_LATER;
1656 int ff_AMediaCodec_infoOutputBuffersChanged(FFAMediaCodec *codec, ssize_t idx)
1658 return idx == codec->INFO_OUTPUT_BUFFERS_CHANGED;
1661 int ff_AMediaCodec_infoOutputFormatChanged(FFAMediaCodec *codec, ssize_t idx)
1663 return idx == codec->INFO_OUTPUT_FORMAT_CHANGED;
1666 int ff_AMediaCodec_getBufferFlagCodecConfig(FFAMediaCodec *codec)
1668 return codec->BUFFER_FLAG_CODEC_CONFIG;
1671 int ff_AMediaCodec_getBufferFlagEndOfStream(FFAMediaCodec *codec)
1673 return codec->BUFFER_FLAG_END_OF_STREAM;
1676 int ff_AMediaCodec_getBufferFlagKeyFrame(FFAMediaCodec *codec)
1678 return codec->BUFFER_FLAG_KEY_FRAME;
1681 int ff_AMediaCodec_getConfigureFlagEncode(FFAMediaCodec *codec)
1683 return codec->CONFIGURE_FLAG_ENCODE;
1686 int ff_AMediaCodec_cleanOutputBuffers(FFAMediaCodec *codec)
1690 if (!codec->has_get_i_o_buffer) {
1691 if (codec->output_buffers) {
1694 env = ff_jni_get_env(codec);
1700 (*env)->DeleteGlobalRef(env, codec->output_buffers);
1701 codec->output_buffers = NULL;