Commit 2ddc6b43 authored by Aman Gupta's avatar Aman Gupta

avcodec/mediacodecdec: propagate SAR to h/w frames

Allows consumers who are converting hardware buffers
to OpenGL textures to render the frames at the intended
display resolution.
Signed-off-by: 's avatarAman Gupta <aman@tmm1.net>
Signed-off-by: 's avatarDerek Buitenhuis <derek.buitenhuis@gmail.com>
parent 9e67447a
...@@ -205,6 +205,7 @@ static int mediacodec_wrap_hw_buffer(AVCodecContext *avctx, ...@@ -205,6 +205,7 @@ static int mediacodec_wrap_hw_buffer(AVCodecContext *avctx,
frame->width = avctx->width; frame->width = avctx->width;
frame->height = avctx->height; frame->height = avctx->height;
frame->format = avctx->pix_fmt; frame->format = avctx->pix_fmt;
frame->sample_aspect_ratio = avctx->sample_aspect_ratio;
if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) { if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) {
frame->pts = av_rescale_q(info->presentationTimeUs, frame->pts = av_rescale_q(info->presentationTimeUs,
...@@ -414,6 +415,16 @@ static int mediacodec_dec_parse_format(AVCodecContext *avctx, MediaCodecDecConte ...@@ -414,6 +415,16 @@ static int mediacodec_dec_parse_format(AVCodecContext *avctx, MediaCodecDecConte
width = s->crop_right + 1 - s->crop_left; width = s->crop_right + 1 - s->crop_left;
height = s->crop_bottom + 1 - s->crop_top; height = s->crop_bottom + 1 - s->crop_top;
AMEDIAFORMAT_GET_INT32(s->display_width, "display-width", 0);
AMEDIAFORMAT_GET_INT32(s->display_height, "display-height", 0);
if (s->display_width && s->display_height) {
AVRational sar = av_div_q(
(AVRational){ s->display_width, s->display_height },
(AVRational){ width, height });
ff_set_sar(avctx, sar);
}
av_log(avctx, AV_LOG_INFO, av_log(avctx, AV_LOG_INFO,
"Output crop parameters top=%d bottom=%d left=%d right=%d, " "Output crop parameters top=%d bottom=%d left=%d right=%d, "
"resulting dimensions width=%d height=%d\n", "resulting dimensions width=%d height=%d\n",
......
...@@ -61,6 +61,8 @@ typedef struct MediaCodecDecContext { ...@@ -61,6 +61,8 @@ typedef struct MediaCodecDecContext {
int crop_bottom; int crop_bottom;
int crop_left; int crop_left;
int crop_right; int crop_right;
int display_width;
int display_height;
uint64_t output_buffer_count; uint64_t output_buffer_count;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment