QVideoFrameFormat Class

QVideoFrameFormat クラスは、ビデオ・プレゼンテーション・サーフェスのストリーム形式を指定します。詳細...

Header: #include <QVideoFrameFormat>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia

パブリック型

enum ColorRange { ColorRange_Unknown, ColorRange_Video, ColorRange_Full }
enum ColorSpace { ColorSpace_Undefined, ColorSpace_BT601, ColorSpace_BT709, ColorSpace_AdobeRgb, ColorSpace_BT2020 }
enum ColorTransfer { ColorTransfer_Unknown, ColorTransfer_BT709, ColorTransfer_BT601, ColorTransfer_Linear, ColorTransfer_Gamma22, …, ColorTransfer_STD_B67 }
enum Direction { TopToBottom, BottomToTop }
enum PixelFormat { Format_Invalid, Format_ARGB8888, Format_ARGB8888_Premultiplied, Format_XRGB8888, Format_BGRA8888, …, Format_YUV420P10 }

パブリック関数

QVideoFrameFormat()
QVideoFrameFormat(const QSize &size, QVideoFrameFormat::PixelFormat format)
QVideoFrameFormat(const QVideoFrameFormat &other)
QVideoFrameFormat(QVideoFrameFormat &&other)
~QVideoFrameFormat()
QVideoFrameFormat::ColorRange colorRange() const
QVideoFrameFormat::ColorSpace colorSpace() const
QVideoFrameFormat::ColorTransfer colorTransfer() const
int frameHeight() const
qreal frameRate() const
QSize frameSize() const
int frameWidth() const
bool isMirrored() const
bool isValid() const
QVideoFrameFormat::PixelFormat pixelFormat() const
int planeCount() const
QtVideo::Rotation rotation() const
QVideoFrameFormat::Direction scanLineDirection() const
void setColorRange(QVideoFrameFormat::ColorRange range)
void setColorSpace(QVideoFrameFormat::ColorSpace colorSpace)
void setColorTransfer(QVideoFrameFormat::ColorTransfer colorTransfer)
void setFrameRate(qreal rate)
void setFrameSize(const QSize &size)
void setFrameSize(int width, int height)
void setMaxLuminance(float lum)
void setMirrored(bool mirrored)
void setRotation(QtVideo::Rotation angle)
void setScanLineDirection(QVideoFrameFormat::Direction direction)
void setStreamFrameRate(qreal rate)
void setViewport(const QRect &viewport)
qreal streamFrameRate() const
void swap(QVideoFrameFormat &other)
QRect viewport() const
bool operator!=(const QVideoFrameFormat &other) const
QVideoFrameFormat &operator=(QVideoFrameFormat &&other)
QVideoFrameFormat &operator=(const QVideoFrameFormat &other)
bool operator==(const QVideoFrameFormat &other) const

静的パブリックメンバ

QImage::Format imageFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format)
QVideoFrameFormat::PixelFormat pixelFormatFromImageFormat(QImage::Format format)
QString pixelFormatToString(QVideoFrameFormat::PixelFormat pixelFormat)

詳細説明

ビデオシンクは、ビデオフレームのストリームを表示します。QVideoFrameFormat は、フレームのタイプを記述し、それらをどのように表示するかを決定します。

ビデオシンクの設定に必要なビデオストリームのコアプロパティは、pixelFormat ()で与えられるピクセル形式と、frameSize ()で与えられるフレーム寸法です。

ビデオサーフェスに実際に表示されるフレームの領域は、viewport ()で与えられる。ストリームは、ビデオフレームの最も近い最適サイズよりも小さいビデオを可能にするために、フレームの全領域よりも小さいビューポートを持つことができます。たとえば、フレームの幅は、各スキャンラインの開始が8バイトに整列するように拡張されることがあります。

その他の一般的なプロパティとして、scanLineDirection ()、frameRate ()、yCrCbColorSpace()がある。

メンバ型ドキュメント

enum QVideoFrameFormat::ColorRange

ビデオデータで使用される色範囲を記述する。ビデオデータは通常、すべての値が使用されるフルカラー範囲か、またはすべての値のサブセットが使用される、YUV ビデオ形式で伝統的に使用されている、より限定された範囲のいずれかで提供されます。

定数説明
QVideoFrameFormat::ColorRange_Unknown0ビデオの色範囲は不明です。
QVideoFrameFormat::ColorRange_Video1

ほとんどの YUV ビデオフォーマットで伝統的に使用されている色範囲。8ビットフォーマットの場合、Y成分は16~235の値に制限される。U成分とV成分は16~240の値に制限される。

より高いビット深度では、これらの値に2^(深度-8)を乗算する。

定数
QVideoFrameFormat::ColorRange_Full2

フルカラーレンジ。0 から 2^depth - 1 までのすべての値が有効。

enum QVideoFrameFormat::ColorSpace

ビデオフレームの色空間を列挙する。

定数説明
QVideoFrameFormat::ColorSpace_Undefined0色空間を指定しない。
QVideoFrameFormat::ColorSpace_BT6011ITU-R 勧告 BT.601 で定義された色空間で、Y 値の範囲は 16 から 235、Cb/Cr の範囲は 16 から 240。主にCRTディスプレイをターゲットとした古い映像で使用される。
QVideoFrameFormat::ColorSpace_BT7092ITU-R BT.709で定義された色空間で、ColorSpace_BT601と同じ値域を持つ。現在最も一般的に使用されている色空間。
QVideoFrameFormat::ColorSpace_AdobeRgb5ほとんどのJPEGファイルで使われているフルレンジのYUV色空間。
QVideoFrameFormat::ColorSpace_BT20206ITU-R BT.2020で定義された色空間。主にHDRビデオに使用される。

enum QVideoFrameFormat::ColorTransfer

定数説明
QVideoFrameFormat::ColorTransfer_Unknown0色伝達関数は不明。
QVideoFrameFormat::ColorTransfer_BT7091色値は BT709 に従ってエンコードされる。https://www.itu.int/rec/R-REC-BT.709/en も参照。これはガンマカーブ2.2に近いが同一ではなく、sRGBで使われているのと同じ伝達カーブである。
QVideoFrameFormat::ColorTransfer_BT6012カラー値はBT601に従ってエンコードされます。https://www.itu.int/rec/R-REC-BT.601/en。
QVideoFrameFormat::ColorTransfer_Linear3色値は線形
QVideoFrameFormat::ColorTransfer_Gamma224色値はガンマ2.2でエンコードされます。
QVideoFrameFormat::ColorTransfer_Gamma285色値はガンマ2.8でエンコードされます。
QVideoFrameFormat::ColorTransfer_ST20846色値はSTME ST 2084を使用してエンコードされる。この伝達関数は最も一般的なHDR伝達関数であり、しばしば「知覚的量子化器」と呼ばれる。https://www.itu.int/rec/R-REC-BT.2100 および https://en.wikipedia.org/wiki/Perceptual_quantizer も参照。
QVideoFrameFormat::ColorTransfer_STD_B677カラー値はARIB STD B67を用いてエンコードされる。この伝達関数は、しばしば「ハイブリッドログガンマ」とも呼ばれる。https://www.itu.int/rec/R-REC-BT.2100、https://en.wikipedia.org/wiki/Hybrid_log-gamma も参照。

enum QVideoFrameFormat::Direction

ビデオ走査線のレイアウト方向を列挙する。

定数説明
QVideoFrameFormat::TopToBottom0走査線はフレームの上から下に向かって配置される。
QVideoFrameFormat::BottomToTop1走査線はフレームの下から上に向かって配置される。

enum QVideoFrameFormat::PixelFormat

ビデオデータ型を列挙します。

定数説明
QVideoFrameFormat::Format_Invalid0フレームは無効です。
QVideoFrameFormat::Format_ARGB88881フレームは、コンポーネントあたり8ビットのARGBフォーマットを使用して格納されています。
QVideoFrameFormat::Format_ARGB8888_Premultiplied2コンポーネントあたり8ビットの事前乗算されたARGBフォーマットを使用して格納されたフレーム。
QVideoFrameFormat::Format_XRGB88883フレームはピクセルあたり32ビットのRGBフォーマット(0xff, R, G, B)を使って保存されている。
QVideoFrameFormat::Format_BGRA8888432ビットBGRAフォーマット(0xBBGGRRAA)を用いて格納されたフレーム。
QVideoFrameFormat::Format_BGRA8888_Premultiplied5フレームは、事前乗算された 32 ビット BGRA フォーマットで格納される。
QVideoFrameFormat::Format_ABGR88887フレームは 32 ビット ABGR フォーマット(0xAABBGGRR)で格納される。
QVideoFrameFormat::Format_XBGR88888フレームは 32 ビット BGR フォーマット(0xffBBGGRR)で格納される。
QVideoFrameFormat::Format_RGBA88889フレームは、R、G、B、A/X バイトとしてメモリに格納される。
QVideoFrameFormat::Format_BGRX88886フレームは32ビットBGRxフォーマット、[31:0] B:G:R:x 8:8:8:8リトルエンディアンで格納される。
QVideoFrameFormat::Format_RGBX888810フレームはR、G、B、A/Xのバイトとしてメモリに格納され、Rが最下位アドレス、A/Xが最上位アドレスとなる。
QVideoFrameFormat::Format_AYUV11フレームはパックされた32ビットAYUVフォーマット(0xAAYYUUVV)で格納される。
QVideoFrameFormat::Format_AYUV_Premultiplied12フレームは packed pre-multiplied 32-bit AYUV フォーマット(0xAAYYUUVV)で格納される。
QVideoFrameFormat::Format_YUV420P13フレームは、UプレーンとVプレーンが水平方向と垂直方向にサブサンプリングされた、すなわちUプレーンとVプレーンの高さと幅がYプレーンの半分である、コンポーネントあたり8ビットの平面YUVフォーマットを使用して格納される。
QVideoFrameFormat::Format_YUV422P14フレームは、UおよびVプレーンが水平方向にサブサンプリングされた、すなわちUおよびVプレーンの幅がYプレーンの半分であり、UおよびVプレーンの高さがYと同じである、コンポーネントあたり8ビットの平面YUVフォーマットを使用して格納される。
QVideoFrameFormat::Format_YV1215フレームは、コンポーネントあたり8ビットのプレーナーYVUフォーマットを使用して格納され、VおよびUプレーンは水平および垂直方向にサブサンプリングされます。
QVideoFrameFormat::Format_UYVY16フレームは、UおよびVプレーンを水平方向にサブサンプリング(U-Y-V-Y)したコンポーネントごとに8ビットのパックされたYUVフォーマットを使用して格納されます。つまり、水平方向に隣接する2つのピクセルは、各ピクセルのY値と共通のUおよびV値を持つ32ビットのマクロピクセルとして格納されます。
QVideoFrameFormat::Format_YUYV17すなわち、水平方向に隣接する2つの画素は、各画素のY値と共通のU値とV値を持つ32ビットのマクロピクセルとして格納される。
QVideoFrameFormat::Format_NV1218フレームは、Yプレーン(Y)に続いて水平および垂直方向にサブサンプリングされ、パックされたUVプレーン(U-V)を持つコンポーネントあたり8ビットの半プレーンYUVフォーマットを使用して格納されます。
QVideoFrameFormat::Format_NV2119フレームは、Yプレーン(Y)に続いて水平および垂直方向にサブサンプリングされたパックドVUプレーン(V-U)を持つ8ビット/コンポーネントセミプレーナーYUVフォーマットを使用して格納される。
QVideoFrameFormat::Format_IMC120フレームは、UプレーンとVプレーンが水平方向と垂直方向にサブサンプリングされた、コンポーネントあたり8ビットのプレーナーYUVフォーマットを使用して格納されます。これは Format_YUV420P タイプと似ていますが、U と V のプレーンのラインごとのバイトが Y プレーンと同じストライドにパディングされる点が異なります。
QVideoFrameFormat::Format_IMC221フレームは、コンポーネントあたり8ビットのプレーナーYUVフォーマットを使用して、UとVプレーンが水平方向と垂直方向にサブサンプリングされて格納されます。これはFormat_YUV420P型と似ていますが、UとVプレーンのラインがインターリーブされている点が異なります。つまり、Uデータの各ラインの後にVデータのラインが続き、Yデータと同じストライドの1ラインが作成されます。
QVideoFrameFormat::Format_IMC322フレームは、コンポーネントあたり8ビットのプレーナーYVUフォーマットを使用して格納され、VおよびUプレーンは水平および垂直方向にサブサンプリングされる。これは Format_YV12 タイプと似ているが、V と U のプレーンの行ごとのバイトが Y プ レーンと同じストライドになるようにパディングされる点が異なる。
QVideoFrameFormat::Format_IMC423フレームは、コンポーネントあたり8ビットの平面 YVU フォーマットを使用して格納され、V プレーンと U プレーンは水平方向と垂直方向にサブサンプリングされます。これは、Format_YV12 タイプと似ていますが、V プレーンおよび U プレーンの行がインターリーブされる点が異なります。つまり、V データの各行の後に U データの行が続き、Y データと同じストライドの 1 行が作成されます。
QVideoFrameFormat::Format_P01026フレームは、Yプレーン(Y)の後に水平および垂直方向にサブサンプリングされ、パックされたUVプレーン(U-V)が続く、コンポーネントあたり16ビットの半プレーンYUVフォーマットを使用して格納されます。各コンポーネントの最上位10ビットのみが使用される。
QVideoFrameFormat::Format_P01627フレームは、Yプレーン(Y)に続いて水平および垂直方向にサブサンプリングされたパックドUVプレーン(U-V)を持つ、コンポーネントあたり16ビットの半プレーンYUVフォーマットを使用して格納される。
QVideoFrameFormat::Format_Y824フレームは8ビットのグレースケールフォーマットで保存される。
QVideoFrameFormat::Format_Y1625フレームは16ビットのリニアグレイスケールフォーマットで保存される。リトルエンディアン。
QVideoFrameFormat::Format_Jpeg29フレームは圧縮Jpegフォーマットで保存される。
QVideoFrameFormat::Format_SamplerExternalOES28フレームは外部OESテクスチャフォーマットで保存されます。これは現在Androidでのみ使用されています。
QVideoFrameFormat::Format_SamplerRect30フレームは矩形テクスチャフォーマット(GL_TEXTURE_RECTANGLE)で保存されます。これは、OpenGLベースのレンダリングハードウェアインターフェースを持つmacOSでのみ使用されています。テクスチャに格納される基本的なピクセルフォーマットはFormat_BRGA8888です。
QVideoFrameFormat::Format_YUV420P1031YUV420に似ていますが、コンポーネントごとに16ビットを使用します。

メンバ関数ドキュメント

QVideoFrameFormat::QVideoFrameFormat()

ヌルビデオストリームフォーマットを構築します。

QVideoFrameFormat::QVideoFrameFormat(const QSize &size, QVideoFrameFormat::PixelFormat format)

与えられたフレームsize とピクセルformat を持つビデオストリームを構築する。

QVideoFrameFormat::QVideoFrameFormat(const QVideoFrameFormat &other)

other のコピーを構築します.

[noexcept] QVideoFrameFormat::QVideoFrameFormat(QVideoFrameFormat &&other)

other から移動して QVideoFrameFormat を構築します.

[noexcept] QVideoFrameFormat::~QVideoFrameFormat()

ビデオ・ストリームの記述を破棄します。

QVideoFrameFormat::ColorRange QVideoFrameFormat::colorRange() const

ビデオ・ストリームのレンダリングに使用する色範囲を返します。

setColorRange()も参照してください

QVideoFrameFormat::ColorSpace QVideoFrameFormat::colorSpace() const

ビデオストリームの色空間を返します。

setColorSpace()も参照

QVideoFrameFormat::ColorTransfer QVideoFrameFormat::colorTransfer() const

色伝達関数: ビデオストリームのレンダリングに使用する色伝達関数を返します。

setColorTransfer()も参照

int QVideoFrameFormat::frameHeight() const

Height関数は、動画像ストリームのフレームの高さを返します。

qreal QVideoFrameFormat::frameRate() const

フレームレート関数は、ビデオストリームのフレームレートを 1 秒あたりのフレーム数で返します。

setFrameRate()も参照

QSize QVideoFrameFormat::frameSize() const

フレームサイズ関数は、ビデオストリーム内のフレームのサイズを返します。

setFrameSize ()、frameWidth ()、frameHeight () も参照

int QVideoFrameFormat::frameWidth() const

幅:動画ストリームにおけるフレームの幅を返す。

frameSize() およびframeHeight()も参照

[static] QImage::Format QVideoFrameFormat::imageFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format)

動画フレームのピクセルに相当する画像フォーマットを返すformat 。同等の形式がない場合は、代わりにQImage::Format_Invalid が返される。

注意: 一般に、QImage は YUV フォーマットを扱わない。

bool QVideoFrameFormat::isMirrored() const

サーフェスが垂直軸を中心にミラーリングされている場合、true を返します。

QVideoFrameFormat の変換、特に回転とミラーリングは、カメラセンサの向き、カメラの設定、またはビデオストリームの向きによって決定されます。

ミラーリングは回転の後に適用される。

注: ここでのミラーリングはQImage::mirrored とは異なり、垂直方向にミラーリングされたQImage は、X 軸を中心にミラーリングされます。

bool QVideoFrameFormat::isValid() const

ビデオサーフェスフォーマットが有効なピクセルフォーマットとフレームサイズを持っているかどうかを識別する。

フォーマットが有効な場合は true を返し、そうでない場合は false を返します。

QVideoFrameFormat::PixelFormat QVideoFrameFormat::pixelFormat() const

ビデオストリーム内のフレームのピクセルフォーマットを返します。

[static] QVideoFrameFormat::PixelFormat QVideoFrameFormat::pixelFormatFromImageFormat(QImage::Format format)

format 画像と同等の動画ピクセルフォーマットを返す。等価な形式がない場合は、代わりにQVideoFrameFormat::Format_Invalid が返される。

注意: 一般に、QImage は YUV フォーマットを扱いません。

[static] QString QVideoFrameFormat::pixelFormatToString(QVideoFrameFormat::PixelFormat pixelFormat)

与えられたpixelFormat の文字列表現を返す。

int QVideoFrameFormat::planeCount() const

使用されるプレーン数を返します。この数値はピクセルフォーマットに依存し、RGBベースのフォーマットでは1、YUVベースのフォーマットでは1から3の間の数値となります。

QtVideo::Rotation QVideoFrameFormat::rotation() const

サーフェスを時計回りに回転させる角度を返します。

QVideoFrameFormat の変換、具体的には回転とミラーリングは、カメラセンサの向き、カメラの設定、またはビデオストリームの向きによって決定されます。

回転はミラーリングの前に適用される。

setRotation()も参照

QVideoFrameFormat::Direction QVideoFrameFormat::scanLineDirection() const

走査線の方向を返す。

setScanLineDirection() も参照

void QVideoFrameFormat::setColorRange(QVideoFrameFormat::ColorRange range)

ビデオストリームのレンダリングに使用する色転送範囲をrange に設定する。

colorRange()も参照

void QVideoFrameFormat::setColorSpace(QVideoFrameFormat::ColorSpace colorSpace)

ビデオストリームのcolorSpace を設定する。

colorSpace() も参照

void QVideoFrameFormat::setColorTransfer(QVideoFrameFormat::ColorTransfer colorTransfer)

動画ストリームのレンダリングに使用する色転送関数をcolorTransfer に設定する。

colorTransfer() も参照

void QVideoFrameFormat::setFrameRate(qreal rate)

動画ストリームのフレームrate を、1 秒あたりのフレーム数で設定する。

frameRate()も参照

void QVideoFrameFormat::setFrameSize(const QSize &size)

動画ストリームのフレームのサイズをsize に設定する。

これにより、viewport() がフレーム全体を埋めるようにリセットされる。

frameSize()も参照

void QVideoFrameFormat::setFrameSize(int width, int height)

これはオーバーロードされた関数です。

ビデオストリーム内のフレームのwidthheight を設定する。

これにより、viewport ()がフレーム全体を埋めるようにリセットされる。

void QVideoFrameFormat::setMaxLuminance(float lum)

最大輝度を、与えられた値lum に設定する。

void QVideoFrameFormat::setMirrored(bool mirrored)

サーフェスが垂直軸を中心にmirrored かどうかを設定します。

QVideoFrameFormat の変形、具体的には回転とミラーリングは、カメラセンサの向き、カメラの設定、またはビデオストリームの向きによって決定されます。

ミラーリングは回転の後に適用されます。

デフォルト値はfalse

注: ここでのミラーリングはQImage::mirrored とは異なり、垂直にミラーリングされたQImage は、そのX軸を中心にミラーリングされます。

isMirrored()も参照して ください。

void QVideoFrameFormat::setRotation(QtVideo::Rotation angle)

サーフェスを時計回りに回転させるangle を設定します。

QVideoFrameFormat の変換、特に回転とミラーリングは、カメラセンサの向き、カメラの設定、またはビデオストリームの向きによって決定されます。

回転はミラーリングの前に適用されます。

デフォルト値はQtVideo::Rotation::None

rotation()も参照

void QVideoFrameFormat::setScanLineDirection(QVideoFrameFormat::Direction direction)

スキャンラインのdirection を設定します。

scanLineDirection()も参照

void QVideoFrameFormat::setStreamFrameRate(qreal rate)

ビデオストリームのフレームrate を 1 秒あたりのフレーム数で設定します。

streamFrameRate()も参照

void QVideoFrameFormat::setViewport(const QRect &viewport)

動画ストリームのビューポートをviewport に設定します。

viewport()も参照

qreal QVideoFrameFormat::streamFrameRate() const

ビデオストリームのフレームレートを、1 秒あたりのフレーム数で返します。

setStreamFrameRate()も参照

[noexcept] void QVideoFrameFormat::swap(QVideoFrameFormat &other)

現在の動画フレーム形式をother と入れ替えます。

QRect QVideoFrameFormat::viewport() const

viewport ビデオストリームのビューポートを返します。

ビューポートとは、実際に表示される動画フレームの領域です。

デフォルトでは、ビューポートはフレーム全体をカバーします。

setViewport()も参照

bool QVideoFrameFormat::operator!=(const QVideoFrameFormat &other) const

other がこの動画形式と異なる場合は true、同じ場合は false を返す。

[noexcept] QVideoFrameFormat &QVideoFrameFormat::operator=(QVideoFrameFormat &&other)

other をこのQVideoFrameFormat に移動する。

QVideoFrameFormat &QVideoFrameFormat::operator=(const QVideoFrameFormat &other)

other の値をこのオブジェクトに代入する。

bool QVideoFrameFormat::operator==(const QVideoFrameFormat &other) const

other がこのビデオ フォーマットと同じ場合は true、異なる場合は false を返します。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。