首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自VideoSink.OnSample的字节流看上去如何?

来自VideoSink.OnSample的字节流看上去如何?
EN

Stack Overflow用户
提问于 2011-05-17 07:06:50
回答 1查看 930关注 0票数 1

在Silverlight中,使用VideoSink.OnSample方法获取原始摄像头数据。函数签名如下:

代码语言:javascript
复制
protected abstract void OnSample(
    long sampleTimeInHundredNanoseconds,
    long frameDurationInHundredNanoseconds,
    byte[] sampleData
)

sampleData文档显示

包含视频数据的字节流。字节流应根据相关的视频格式信息处理为样本。

转到VideoFormat类的文档,您将得到VideoFormat.PixelFormat属性,该属性根据文档只能有两个可能的值。

  • 未知-格式未知。
  • Format32bppArgb -该格式每个像素使用32位颜色信息,并使用alpha、红色、蓝色和绿色通道报告颜色信息。

我想了解sampleData方法的VideoSink.OnSample参数是什么样子的。它仅仅是像下面这样的像素数组吗?

代码语言:javascript
复制
sampleData[0] = image[x = 0, y = 0].R;
sampleData[1] = image[x = 0, y = 0].G;
sampleData[2] = image[x = 0, y = 0].B;
sampleData[3] = image[x = 0, y = 0].A;
sampleData[4 to 7] = image[x = 0, y = 1];
sampleData[8 to 11] = image[x = 0, y = 2];
sampleData[4*Height-4 to 4*Height-1] = image[x = 0, y = Height];
sampleData[4*Height to 4*Height+3] = image[x = 1, y = 0];
// ...

如果简单的话:订购正确吗?

  • 每个像素在B之前的G之前的r
  • 第一列的所有像素在第二列的所有像素之前,等等。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-18 10:04:19

Format32bppArgb像素格式的字节流如下所示:

代码语言:javascript
复制
sampleData[0- 3] = image[x=0, y=0]
sampleData[4- 7] = image[x=1, y=0]
sampleData[8-11] = image[x=2, y=0]
      ...                ...
                   image[x=w, y=0]
                   image[x=0, y=1]
                         ...
                   image[x=w, y=h]

因此,它是逐行存储的。

对于以字节I到i+3存储的每个像素,信息如下:

代码语言:javascript
复制
sampleData[i+0] = BLUE
sampleData[i+1] = GREEN
sampleData[i+2] = RED
sampleData[i+3] = ALPHA

所有通道都作为整数存储在0;255范围内,其中255表示颜色通道的最大强度,而对于alpha通道则表示不透明。所以,除了排序,它的工作原理是预期的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6027397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档