Both sides previous revision Previous revision Next revision | Previous revision |
raw [2020/03/30 13:46] – yair | raw [2024/06/30 17:30] (current) – yair |
---|
====GRAY8 vs RTP==== | ====GRAY8 vs RTP==== |
**problem**: \\ | **problem**: \\ |
single plane raw formats are not part of [[https://tools.ietf.org/html/rfc4175|rfc4175]], and as such 2nd class citizens to gstreamer, RTSP and [[https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/pixfmt-grey.html|anywhere]]. | single plane raw formats are not part of [[https://tools.ietf.org/html/rfc4175|rfc4175]], and as such 2nd class citizens to gstreamer, RTSP or [[https://www.kernel.org/doc/html/v4.10/media/uapi/v4l/pixfmt-grey.html|anywhere]] else. |
| |
**solution**: \\ | **solution**: \\ |
a missing channel in any image format is **just a convention**, we can re-package a datastream to another, as long as we mind our strides. | an image format is **just a convention**, internally they are byte(octet) streams. we can re-package a datastream to another format, as long as we mind our strides. |
| |
view the image format as just a stream of octets. here is our stream in Y8 format | view the image format as just a stream of octets. here is our stream in Y8 format |
note the above represents two sequential pixels. | note the above represents two sequential pixels. |
| |
the trick is to use gstreamer built in format [[https://gstreamer.freedesktop.org/documentation/additional/design/mediatype-video-raw.html?gi-language=c#formats|design document]] and let it handle the conventions. | the trick is to use gstreamer built in [[https://gstreamer.freedesktop.org/documentation/additional/design/mediatype-video-raw.html?gi-language=c#formats|format spec]] and let that handle the conventions. |
| |
the [[https://www.collabora.com/news-and-blog/blog/2016/02/16/a-programmers-view-on-digital-images-the-essentials/|hammer]] | the [[https://www.collabora.com/news-and-blog/blog/2016/02/16/a-programmers-view-on-digital-images-the-essentials/|hammer]] |
and YUV doesnt use the entire 0-255 space. [[https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/738|issue]] | and YUV doesnt use the entire 0-255 space. [[https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/738|issue]] |
| |
| **note2**: this example is running on linux/debian, \\ |
| to adapt to windows using powershell replace ''\'' with ''`'' and \\ |
| place quotes around ''video/x-raw, format=GRAY8, width=4, height=4'' |
| |
| |
====strides and offsets==== | ====strides and offsets==== |
| |
there are extremes to this approach (yuv). get the hammer and study the [[https://gstreamer.freedesktop.org/documentation/additional/design/mediatype-video-raw.html?gi-language=c#formats|design document]]. | there are caveats to this approach (yuv). get the hammer and study the [[https://gstreamer.freedesktop.org/documentation/additional/design/mediatype-video-raw.html?gi-language=c#formats|design document]]. |
| |
| |
</hidden> | </hidden> |
| |
[[https://github.com/torvalds/linux/blob/master/include/uapi/drm/drm_fourcc.h#L174|fourcc]] on linux | [[https://github.com/torvalds/linux/blob/master/include/uapi/drm/drm_fourcc.h#L174|fourcc]] on linux\\ |
| [[https://docs.microsoft.com/en-us/windows/win32/medfound/image-stride?redirectedfrom=MSDN|MSDN on stride]] |
| |