@@ -660,6 +660,8 @@ static int get_plane_infos(
660
660
661
661
plane_infos [i ].fd = ok ;
662
662
}
663
+
664
+ offset_in_memory += memory -> offset ;
663
665
}
664
666
665
667
plane_infos [i ].offset = offset_in_memory ;
@@ -780,27 +782,27 @@ static EGLint egl_sample_range_hint_from_gst_info(const GstVideoInfo *info) {
780
782
}
781
783
782
784
static EGLint egl_horizontal_chroma_siting_from_gst_info (const GstVideoInfo * info ) {
783
- if ((GST_VIDEO_INFO_CHROMA_SITE (info ) & ~(GST_VIDEO_CHROMA_SITE_H_COSITED | GST_VIDEO_CHROMA_SITE_V_COSITED )) == 0 ) {
784
- if (GST_VIDEO_INFO_CHROMA_SITE (info ) & GST_VIDEO_CHROMA_SITE_H_COSITED ) {
785
- return EGL_YUV_CHROMA_SITING_0_EXT ;
786
- } else {
787
- return EGL_YUV_CHROMA_SITING_0_5_EXT ;
788
- }
789
- }
785
+ GstVideoChromaSite chroma_site = GST_VIDEO_INFO_CHROMA_SITE (info );
790
786
791
- return EGL_NONE ;
787
+ if (chroma_site == GST_VIDEO_CHROMA_SITE_H_COSITED || chroma_site == GST_VIDEO_CHROMA_SITE_COSITED ) {
788
+ return EGL_YUV_CHROMA_SITING_0_EXT ;
789
+ } else if (chroma_site == GST_VIDEO_CHROMA_SITE_V_COSITED || chroma_site == GST_VIDEO_CHROMA_SITE_NONE ) {
790
+ return EGL_YUV_CHROMA_SITING_0_5_EXT ;
791
+ } else {
792
+ return EGL_NONE ;
793
+ }
792
794
}
793
795
794
796
static EGLint egl_vertical_chroma_siting_from_gst_info (const GstVideoInfo * info ) {
795
- if ((GST_VIDEO_INFO_CHROMA_SITE (info ) & ~(GST_VIDEO_CHROMA_SITE_H_COSITED | GST_VIDEO_CHROMA_SITE_V_COSITED )) == 0 ) {
796
- if (GST_VIDEO_INFO_CHROMA_SITE (info ) & GST_VIDEO_CHROMA_SITE_V_COSITED ) {
797
- return EGL_YUV_CHROMA_SITING_0_EXT ;
798
- } else {
799
- return EGL_YUV_CHROMA_SITING_0_5_EXT ;
800
- }
801
- }
797
+ GstVideoChromaSite chroma_site = GST_VIDEO_INFO_CHROMA_SITE (info );
802
798
803
- return EGL_NONE ;
799
+ if (chroma_site == GST_VIDEO_CHROMA_SITE_V_COSITED || chroma_site == GST_VIDEO_CHROMA_SITE_COSITED ) {
800
+ return EGL_YUV_CHROMA_SITING_0_EXT ;
801
+ } else if (chroma_site == GST_VIDEO_CHROMA_SITE_H_COSITED || chroma_site == GST_VIDEO_CHROMA_SITE_NONE ) {
802
+ return EGL_YUV_CHROMA_SITING_0_5_EXT ;
803
+ } else {
804
+ return EGL_NONE ;
805
+ }
804
806
}
805
807
806
808
struct video_frame * frame_new (
@@ -948,7 +950,7 @@ struct video_frame *frame_new(
948
950
949
951
// add plane 2 (if present)
950
952
if (n_planes >= 2 ) {
951
- PUT_ATTR (EGL_DMA_BUF_PLANE1_FD_EXT , planes [0 ].fd );
953
+ PUT_ATTR (EGL_DMA_BUF_PLANE1_FD_EXT , planes [1 ].fd );
952
954
PUT_ATTR (EGL_DMA_BUF_PLANE1_OFFSET_EXT , planes [1 ].offset );
953
955
PUT_ATTR (EGL_DMA_BUF_PLANE1_PITCH_EXT , planes [1 ].pitch );
954
956
if (planes [1 ].has_modifier ) {
@@ -964,7 +966,7 @@ struct video_frame *frame_new(
964
966
965
967
// add plane 3 (if present)
966
968
if (n_planes >= 3 ) {
967
- PUT_ATTR (EGL_DMA_BUF_PLANE2_FD_EXT , planes [0 ].fd );
969
+ PUT_ATTR (EGL_DMA_BUF_PLANE2_FD_EXT , planes [2 ].fd );
968
970
PUT_ATTR (EGL_DMA_BUF_PLANE2_OFFSET_EXT , planes [2 ].offset );
969
971
PUT_ATTR (EGL_DMA_BUF_PLANE2_PITCH_EXT , planes [2 ].pitch );
970
972
if (planes [2 ].has_modifier ) {
0 commit comments