mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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: Aman Gupta <aman@tmm1.net> Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is contained in:
parent
9e67447a4f
commit
2ddc6b4392
@ -205,6 +205,7 @@ static int mediacodec_wrap_hw_buffer(AVCodecContext *avctx,
|
||||
frame->width = avctx->width;
|
||||
frame->height = avctx->height;
|
||||
frame->format = avctx->pix_fmt;
|
||||
frame->sample_aspect_ratio = avctx->sample_aspect_ratio;
|
||||
|
||||
if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) {
|
||||
frame->pts = av_rescale_q(info->presentationTimeUs,
|
||||
@ -414,6 +415,16 @@ static int mediacodec_dec_parse_format(AVCodecContext *avctx, MediaCodecDecConte
|
||||
width = s->crop_right + 1 - s->crop_left;
|
||||
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,
|
||||
"Output crop parameters top=%d bottom=%d left=%d right=%d, "
|
||||
"resulting dimensions width=%d height=%d\n",
|
||||
|
@ -61,6 +61,8 @@ typedef struct MediaCodecDecContext {
|
||||
int crop_bottom;
|
||||
int crop_left;
|
||||
int crop_right;
|
||||
int display_width;
|
||||
int display_height;
|
||||
|
||||
uint64_t output_buffer_count;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user