Lines Matching defs:avctx
196 static enum AVPixelFormat mcdec_map_color_format(AVCodecContext *avctx,
217 av_log(avctx, AV_LOG_ERROR, "Output color format 0x%x (value=%d) is not supported\n",
262 av_log(ctx->avctx, AV_LOG_DEBUG,
273 static int mediacodec_wrap_hw_buffer(AVCodecContext *avctx,
284 frame->width = avctx->width;
285 frame->height = avctx->height;
286 frame->format = avctx->pix_fmt;
287 frame->sample_aspect_ratio = avctx->sample_aspect_ratio;
289 if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) {
292 avctx->pkt_timebase);
297 frame->color_range = avctx->color_range;
298 frame->color_primaries = avctx->color_primaries;
299 frame->color_trc = avctx->color_trc;
300 frame->colorspace = avctx->colorspace;
333 av_log(avctx, AV_LOG_DEBUG,
343 av_log(avctx, AV_LOG_ERROR, "Failed to release output buffer\n");
350 static int mediacodec_wrap_sw_buffer(AVCodecContext *avctx,
361 frame->width = avctx->width;
362 frame->height = avctx->height;
363 frame->format = avctx->pix_fmt;
368 if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) {
369 av_log(avctx, AV_LOG_ERROR, "Could not allocate buffer\n");
377 if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) {
380 avctx->pkt_timebase);
386 av_log(avctx, AV_LOG_TRACE,
390 avctx->width, s->stride, avctx->height, s->slice_height,
396 ff_mediacodec_sw_buffer_copy_yuv420_planar(avctx, s, data, size, info, frame);
401 ff_mediacodec_sw_buffer_copy_yuv420_semi_planar(avctx, s, data, size, info, frame);
405 ff_mediacodec_sw_buffer_copy_yuv420_packed_semi_planar(avctx, s, data, size, info, frame);
408 ff_mediacodec_sw_buffer_copy_yuv420_packed_semi_planar_64x32Tile2m8ka(avctx, s, data, size, info, frame);
411 av_log(avctx, AV_LOG_ERROR, "Unsupported color format 0x%x (value=%d)\n",
421 av_log(avctx, AV_LOG_ERROR, "Failed to release output buffer\n");
433 av_log(avctx, AV_LOG_ERROR, "Could not get %s from format %s\n", key, format); \
439 static int mediacodec_dec_parse_format(AVCodecContext *avctx, MediaCodecDecContext *s)
450 av_log(avctx, AV_LOG_ERROR, "Output MediaFormat is not set\n");
458 av_log(avctx, AV_LOG_DEBUG, "Parsing MediaFormat %s\n", format);
472 s->slice_height = avctx->height;
473 s->stride = avctx->width;
479 avctx->pix_fmt = mcdec_map_color_format(avctx, s, s->color_format);
480 if (avctx->pix_fmt == AV_PIX_FMT_NONE) {
481 av_log(avctx, AV_LOG_ERROR, "Output color format is not supported\n");
502 ff_set_sar(avctx, sar);
507 avctx->color_range = mcdec_get_color_range(color_range);
511 avctx->colorspace = mcdec_get_color_space(color_standard);
512 avctx->color_primaries = mcdec_get_color_pri(color_standard);
517 avctx->color_trc = mcdec_get_color_trc(color_transfer);
519 av_log(avctx, AV_LOG_INFO,
526 return ff_set_dimensions(avctx, width, height);
532 static int mediacodec_dec_flush_codec(AVCodecContext *avctx, MediaCodecDecContext *s)
548 av_log(avctx, AV_LOG_ERROR, "Failed to flush codec\n");
555 int ff_mediacodec_dec_init(AVCodecContext *avctx, MediaCodecDecContext *s,
568 s->avctx = avctx;
574 pix_fmt = ff_get_format(avctx, pix_fmts);
576 AVMediaCodecContext *user_ctx = avctx->hwaccel_context;
578 if (avctx->hw_device_ctx) {
579 AVHWDeviceContext *device_ctx = (AVHWDeviceContext*)(avctx->hw_device_ctx->data);
583 s->surface = ff_mediacodec_surface_ref(mediacodec_ctx->surface, avctx);
584 av_log(avctx, AV_LOG_INFO, "Using surface %p\n", s->surface);
590 s->surface = ff_mediacodec_surface_ref(user_ctx->surface, avctx);
591 av_log(avctx, AV_LOG_INFO, "Using surface %p\n", s->surface);
595 profile = ff_AMediaCodecProfile_getProfileFromAVCodecContext(avctx);
597 av_log(avctx, AV_LOG_WARNING, "Unsupported or unknown profile\n");
600 s->codec_name = ff_AMediaCodecList_getCodecNameByType(mime, profile, 0, avctx);
606 av_log(avctx, AV_LOG_DEBUG, "Found decoder %s\n", s->codec_name);
609 av_log(avctx, AV_LOG_ERROR, "Failed to create media decoder for type %s and name %s\n", mime, s->codec_name);
617 av_log(avctx, AV_LOG_ERROR,
629 av_log(avctx, AV_LOG_ERROR,
639 if ((ret = mediacodec_dec_parse_format(avctx, s)) < 0) {
640 av_log(avctx, AV_LOG_ERROR,
646 av_log(avctx, AV_LOG_DEBUG, "MediaCodec %p started successfully\n", s->codec);
651 av_log(avctx, AV_LOG_ERROR, "MediaCodec %p failed to start\n", s->codec);
652 ff_mediacodec_dec_close(avctx, s);
656 int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s,
669 av_log(avctx, AV_LOG_ERROR, "Decoder is flushing and cannot accept new buffer "
687 av_log(avctx, AV_LOG_TRACE, "No input buffer available, try again later\n");
692 av_log(avctx, AV_LOG_ERROR, "Failed to dequeue input buffer (status=%zd)\n", index);
700 av_log(avctx, AV_LOG_ERROR, "Failed to get input buffer\n");
706 av_log(avctx, AV_LOG_WARNING, "Input packet is missing PTS\n");
709 if (pts && avctx->pkt_timebase.num && avctx->pkt_timebase.den) {
710 pts = av_rescale_q(pts, avctx->pkt_timebase, AV_TIME_BASE_Q);
716 av_log(avctx, AV_LOG_DEBUG, "Sending End Of Stream signal\n");
720 av_log(avctx, AV_LOG_ERROR, "Failed to queue input empty buffer (status = %d)\n", status);
724 av_log(avctx, AV_LOG_TRACE,
737 av_log(avctx, AV_LOG_ERROR, "Failed to queue input buffer (status = %d)\n", status);
741 av_log(avctx, AV_LOG_TRACE,
750 int ff_mediacodec_dec_receive(AVCodecContext *avctx, MediaCodecDecContext *s,
779 av_log(avctx, AV_LOG_TRACE, "Got output buffer %zd"
790 if ((ret = mediacodec_wrap_hw_buffer(avctx, s, index, &info, frame)) < 0) {
791 av_log(avctx, AV_LOG_ERROR, "Failed to wrap MediaCodec buffer\n");
797 av_log(avctx, AV_LOG_ERROR, "Failed to get output buffer\n");
801 if ((ret = mediacodec_wrap_sw_buffer(avctx, s, data, size, index, &info, frame)) < 0) {
802 av_log(avctx, AV_LOG_ERROR, "Failed to wrap MediaCodec buffer\n");
812 av_log(avctx, AV_LOG_ERROR, "Failed to release output buffer\n");
822 av_log(avctx, AV_LOG_ERROR, "Failed to delete MediaFormat %p\n", s->format);
828 av_log(avctx, AV_LOG_ERROR, "Failed to get output format\n");
836 av_log(avctx, AV_LOG_INFO, "Output MediaFormat changed to %s\n", format);
839 if ((ret = mediacodec_dec_parse_format(avctx, s)) < 0) {
847 av_log(avctx, AV_LOG_ERROR, "Failed to dequeue output buffer within %" PRIi64 "ms "
851 av_log(avctx, AV_LOG_TRACE, "No output buffer available, try again later\n");
854 av_log(avctx, AV_LOG_ERROR, "Failed to dequeue output buffer (status=%zd)\n", index);
873 int ff_mediacodec_dec_flush(AVCodecContext *avctx, MediaCodecDecContext *s)
880 if ((ret = mediacodec_dec_flush_codec(avctx, s)) < 0) {
891 int ff_mediacodec_dec_close(AVCodecContext *avctx, MediaCodecDecContext *s)
898 int ff_mediacodec_dec_is_flushing(AVCodecContext *avctx, MediaCodecDecContext *s)