21class QVideoFrameFormatPrivate :
public QSharedData
24 QVideoFrameFormatPrivate() =
default;
26 QVideoFrameFormatPrivate(
28 QVideoFrameFormat::PixelFormat format)
31 , viewport(QPoint(0, 0), size)
35 bool operator ==(
const QVideoFrameFormatPrivate &other)
const
37 if (pixelFormat == other.pixelFormat && scanLineDirection == other.scanLineDirection
38 && frameSize == other.frameSize && viewport == other.viewport
39 && frameRatesEqual(frameRate, other.frameRate) && colorSpace == other.colorSpace
40 && transformation == other.transformation)
46 inline static bool frameRatesEqual(qreal r1, qreal r2)
48 return qAbs(r1 - r2) <= 0.00001 * qMin(qAbs(r1), qAbs(r2));
51 QVideoFrameFormat::PixelFormat pixelFormat = QVideoFrameFormat::Format_Invalid;
52 QVideoFrameFormat::Direction scanLineDirection = QVideoFrameFormat::TopToBottom;
54 QVideoFrameFormat::ColorSpace colorSpace = QVideoFrameFormat::ColorSpace_Undefined;
55 QVideoFrameFormat::ColorTransfer colorTransfer = QVideoFrameFormat::ColorTransfer_Unknown;
56 QVideoFrameFormat::ColorRange colorRange = QVideoFrameFormat::ColorRange_Unknown;
58 float frameRate = 0.0;
59 float maxLuminance = -1.;
60 VideoTransformation transformation;
787QVideoFrameFormat::PixelFormat QVideoFrameFormat::pixelFormatFromImageFormat(QImage::Format format)
790#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
791 case QImage::Format_RGB32:
792 return QVideoFrameFormat::Format_BGRX8888;
793 case QImage::Format_ARGB32:
794 return QVideoFrameFormat::Format_BGRA8888;
795 case QImage::Format_ARGB32_Premultiplied:
796 return QVideoFrameFormat::Format_BGRA8888_Premultiplied;
798 case QImage::Format_RGB32:
799 return QVideoFrameFormat::Format_XRGB8888;
800 case QImage::Format_ARGB32:
801 return QVideoFrameFormat::Format_ARGB8888;
802 case QImage::Format_ARGB32_Premultiplied:
803 return QVideoFrameFormat::Format_ARGB8888_Premultiplied;
805 case QImage::Format_RGBA8888:
806 return QVideoFrameFormat::Format_RGBA8888;
807 case QImage::Format_RGBA8888_Premultiplied:
810 return QVideoFrameFormat::Format_RGBX8888;
811 case QImage::Format_RGBX8888:
812 return QVideoFrameFormat::Format_RGBX8888;
813 case QImage::Format_Grayscale8:
814 return QVideoFrameFormat::Format_Y8;
815 case QImage::Format_Grayscale16:
816 return QVideoFrameFormat::Format_Y16;
818 return QVideoFrameFormat::Format_Invalid;
829QImage::Format QVideoFrameFormat::imageFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format)
832#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
833 case QVideoFrameFormat::Format_BGRA8888:
834 return QImage::Format_ARGB32;
835 case QVideoFrameFormat::Format_BGRA8888_Premultiplied:
836 return QImage::Format_ARGB32_Premultiplied;
837 case QVideoFrameFormat::Format_BGRX8888:
838 return QImage::Format_RGB32;
839 case QVideoFrameFormat::Format_ARGB8888:
840 case QVideoFrameFormat::Format_ARGB8888_Premultiplied:
841 case QVideoFrameFormat::Format_XRGB8888:
842 return QImage::Format_Invalid;
844 case QVideoFrameFormat::Format_ARGB8888:
845 return QImage::Format_ARGB32;
846 case QVideoFrameFormat::Format_ARGB8888_Premultiplied:
847 return QImage::Format_ARGB32_Premultiplied;
848 case QVideoFrameFormat::Format_XRGB8888:
849 return QImage::Format_RGB32;
850 case QVideoFrameFormat::Format_BGRA8888:
851 case QVideoFrameFormat::Format_BGRA8888_Premultiplied:
852 case QVideoFrameFormat::Format_BGRX8888:
853 return QImage::Format_Invalid;
855 case QVideoFrameFormat::Format_RGBA8888:
856 return QImage::Format_RGBA8888;
857 case QVideoFrameFormat::Format_RGBX8888:
858 return QImage::Format_RGBX8888;
859 case QVideoFrameFormat::Format_Y8:
860 return QImage::Format_Grayscale8;
861 case QVideoFrameFormat::Format_Y16:
862 return QImage::Format_Grayscale16;
863 case QVideoFrameFormat::Format_ABGR8888:
864 case QVideoFrameFormat::Format_XBGR8888:
865 case QVideoFrameFormat::Format_AYUV:
866 case QVideoFrameFormat::Format_AYUV_Premultiplied:
867 case QVideoFrameFormat::Format_YUV420P:
868 case QVideoFrameFormat::Format_YUV420P10:
869 case QVideoFrameFormat::Format_YUV422P:
870 case QVideoFrameFormat::Format_YV12:
871 case QVideoFrameFormat::Format_UYVY:
872 case QVideoFrameFormat::Format_YUYV:
873 case QVideoFrameFormat::Format_NV12:
874 case QVideoFrameFormat::Format_NV21:
875 case QVideoFrameFormat::Format_IMC1:
876 case QVideoFrameFormat::Format_IMC2:
877 case QVideoFrameFormat::Format_IMC3:
878 case QVideoFrameFormat::Format_IMC4:
879 case QVideoFrameFormat::Format_P010:
880 case QVideoFrameFormat::Format_P016:
881 case QVideoFrameFormat::Format_Jpeg:
882 case QVideoFrameFormat::Format_Invalid:
883 case QVideoFrameFormat::Format_SamplerExternalOES:
884 case QVideoFrameFormat::Format_SamplerRect:
885 return QImage::Format_Invalid;
887 return QImage::Format_Invalid;
893QString QVideoFrameFormat::pixelFormatToString(QVideoFrameFormat::PixelFormat pixelFormat)
895 switch (pixelFormat) {
896 case QVideoFrameFormat::Format_Invalid:
897 return QStringLiteral(
"Invalid");
898 case QVideoFrameFormat::Format_ARGB8888:
899 return QStringLiteral(
"ARGB8888");
900 case QVideoFrameFormat::Format_ARGB8888_Premultiplied:
901 return QStringLiteral(
"ARGB8888 Premultiplied");
902 case QVideoFrameFormat::Format_XRGB8888:
903 return QStringLiteral(
"XRGB8888");
904 case QVideoFrameFormat::Format_BGRA8888:
905 return QStringLiteral(
"BGRA8888");
906 case QVideoFrameFormat::Format_BGRX8888:
907 return QStringLiteral(
"BGRX8888");
908 case QVideoFrameFormat::Format_BGRA8888_Premultiplied:
909 return QStringLiteral(
"BGRA8888 Premultiplied");
910 case QVideoFrameFormat::Format_RGBA8888:
911 return QStringLiteral(
"RGBA8888");
912 case QVideoFrameFormat::Format_RGBX8888:
913 return QStringLiteral(
"RGBX8888");
914 case QVideoFrameFormat::Format_ABGR8888:
915 return QStringLiteral(
"ABGR8888");
916 case QVideoFrameFormat::Format_XBGR8888:
917 return QStringLiteral(
"XBGR8888");
918 case QVideoFrameFormat::Format_AYUV:
919 return QStringLiteral(
"AYUV");
920 case QVideoFrameFormat::Format_AYUV_Premultiplied:
921 return QStringLiteral(
"AYUV Premultiplied");
922 case QVideoFrameFormat::Format_YUV420P:
923 return QStringLiteral(
"YUV420P");
924 case QVideoFrameFormat::Format_YUV420P10:
925 return QStringLiteral(
"YUV420P10");
926 case QVideoFrameFormat::Format_YUV422P:
927 return QStringLiteral(
"YUV422P");
928 case QVideoFrameFormat::Format_YV12:
929 return QStringLiteral(
"YV12");
930 case QVideoFrameFormat::Format_UYVY:
931 return QStringLiteral(
"UYVY");
932 case QVideoFrameFormat::Format_YUYV:
933 return QStringLiteral(
"YUYV");
934 case QVideoFrameFormat::Format_NV12:
935 return QStringLiteral(
"NV12");
936 case QVideoFrameFormat::Format_NV21:
937 return QStringLiteral(
"NV21");
938 case QVideoFrameFormat::Format_IMC1:
939 return QStringLiteral(
"IMC1");
940 case QVideoFrameFormat::Format_IMC2:
941 return QStringLiteral(
"IMC2");
942 case QVideoFrameFormat::Format_IMC3:
943 return QStringLiteral(
"IMC3");
944 case QVideoFrameFormat::Format_IMC4:
945 return QStringLiteral(
"IMC4");
946 case QVideoFrameFormat::Format_Y8:
947 return QStringLiteral(
"Y8");
948 case QVideoFrameFormat::Format_Y16:
949 return QStringLiteral(
"Y16");
950 case QVideoFrameFormat::Format_P010:
951 return QStringLiteral(
"P010");
952 case QVideoFrameFormat::Format_P016:
953 return QStringLiteral(
"P016");
954 case QVideoFrameFormat::Format_SamplerExternalOES:
955 return QStringLiteral(
"SamplerExternalOES");
956 case QVideoFrameFormat::Format_Jpeg:
957 return QStringLiteral(
"Jpeg");
958 case QVideoFrameFormat::Format_SamplerRect:
959 return QStringLiteral(
"SamplerRect");
962 return QStringLiteral(
"");
998QDebug operator<<(QDebug dbg, QVideoFrameFormat::ColorSpace cs)
1000 QDebugStateSaver saver(dbg);
1003 case QVideoFrameFormat::ColorSpace_BT601:
1004 dbg <<
"ColorSpace_BT601";
1006 case QVideoFrameFormat::ColorSpace_BT709:
1007 dbg <<
"ColorSpace_BT709";
1009 case QVideoFrameFormat::ColorSpace_AdobeRgb:
1010 dbg <<
"ColorSpace_AdobeRgb";
1012 case QVideoFrameFormat::ColorSpace_BT2020:
1013 dbg <<
"ColorSpace_BT2020";
1016 dbg <<
"ColorSpace_Undefined";