Kaynağa Gözat

win-dshow: Respect TRC of encoded video

Fixes colors for devices that send HDR streams.
jpark37 3 yıl önce
ebeveyn
işleme
cb42be3665
1 değiştirilmiş dosya ile 19 ekleme ve 0 silme
  1. 19 0
      plugins/win-dshow/ffmpeg-decode.c

+ 19 - 0
plugins/win-dshow/ffmpeg-decode.c

@@ -400,6 +400,25 @@ bool ffmpeg_decode_video(struct ffmpeg_decode *decode, uint8_t *data,
 	frame->height = decode->frame->height;
 	frame->flip = false;
 
+	switch (decode->frame->color_trc) {
+	case AVCOL_TRC_BT709:
+	case AVCOL_TRC_GAMMA22:
+	case AVCOL_TRC_GAMMA28:
+	case AVCOL_TRC_SMPTE170M:
+	case AVCOL_TRC_SMPTE240M:
+	case AVCOL_TRC_IEC61966_2_1:
+		frame->trc = VIDEO_TRC_SRGB;
+		break;
+	case AVCOL_TRC_SMPTE2084:
+		frame->trc = VIDEO_TRC_PQ;
+		break;
+	case AVCOL_TRC_ARIB_STD_B67:
+		frame->trc = VIDEO_TRC_HLG;
+		break;
+	default:
+		frame->trc = VIDEO_TRC_DEFAULT;
+	}
+
 	if (frame->format == VIDEO_FORMAT_NONE)
 		return false;