小编rub*_*uza的帖子

在C中扩展结构

我最近遇到了一个同事的代码,看起来像这样:

typedef struct A {
  int x;
}A;

typedef struct B {
  A a;
  int d;
}B;

void fn(){
  B *b;
  ((A*)b)->x = 10;
}
Run Code Online (Sandbox Code Playgroud)

他的解释是,因为它struct A是第一个成员struct B,所以b->xb->a.x提供更好的可读性.
这是有道理的,但这被认为是好的做法吗?这会跨平台工作吗?目前这在GCC上运行良好.

c struct

61
推荐指数
6
解决办法
5337
查看次数

gst_parse_launch() 的限制?

据我了解,gst_parse_launch()基于描述管道的命令行语法创建了一个新管道。它会自动处理请求填充(有时是填充等)的所有复杂细节并构建管道。

所以我的问题是,为什么不一直使用它?为什么要添加垫添加处理程序,请求和链接垫等?

是否有使用gst_parse_launch()不会做的情况?

c gstreamer

4
推荐指数
1
解决办法
4802
查看次数

如何在 Gstreamer 中以文本格式获取由 playbin 创建的管道?

我正在使用以下管道播放传输流文件 (*.ts):

gst-launch-0.10 playbin2 uri=file:///c:/bbb.ts
Run Code Online (Sandbox Code Playgroud)

但我需要自己将其转换为管道。我不确定如何实现这一目标。

到目前为止,我已经尝试过:(工作正常)

gst-launch-0.10 -v filesrc location=c:/bbb.ts ! tsdemux ! audio/x-ac3 ! fakesink
Run Code Online (Sandbox Code Playgroud)

但是,如果我用 autoaudiosink 替换 fakesink,它会因未链接错误而失败。

甚至 fakesink 也不适用于视频:

gst-launch-0.10 -v filesrc location=c:/bbb.ts ! tsdemux ! video/x-mpeg2 ! fakesink
Run Code Online (Sandbox Code Playgroud)

所以我有两个问题:

  1. 如何找出由 playbin 元素创建的管道。
  2. 如何使用 gstreamer 管道播放 mpeg2-ts 文件。

mpeg gstreamer mpeg2-ts playbin2

4
推荐指数
1
解决办法
5290
查看次数

标签 统计

c ×2

gstreamer ×2

mpeg ×1

mpeg2-ts ×1

playbin2 ×1

struct ×1