gstreamer1.16.3中没有gst_video_codec_state_new
时间: 2023-09-12 18:05:43 浏览: 82
如果你使用的是 GStreamer 1.16.3 版本,那么确实没有 `gst_video_codec_state_new` 函数。这个函数最早出现在 GStreamer 1.18 版本中,用于创建视频编解码器状态对象。
在 GStreamer 1.16.3 版本中,可以使用 `gst_video_info_init()` 函数来初始化一个 `GstVideoInfo` 对象,该对象包含有关视频流格式和编码器参数的信息。你可以将 `GstVideoInfo` 对象传递给 `gst_video_decoder_set_output_state()` 函数来设置视频解码器的输出状态。
例如,以下代码演示了如何使用 `gst_video_info_init()` 函数和 `gst_video_decoder_set_output_state()` 函数创建视频解码器状态:
```c
GstVideoInfo info;
GstVideoCodecState *state;
// 初始化 video info 对象
gst_video_info_init(&info);
info.width = 640;
info.height = 480;
info.fps_n = 30;
info.fps_d = 1;
// 创建视频解码器状态
state = gst_video_decoder_set_output_state(GST_VIDEO_DECODER(h264parse_), &info);
if (state == NULL) {
g_print("Failed to create video codec state\n");
return;
}
// 使用 state 对象进行解码
// ...
```
在这个例子中,我们首先使用 `gst_video_info_init()` 函数初始化一个 `GstVideoInfo` 对象,该对象表示一个 640x480 分辨率、30fps 的视频流。然后,我们使用 `gst_video_decoder_set_output_state()` 函数创建一个新的视频解码器状态对象,并将其设置为解码器的输出状态。注意,在这个例子中,我们将 `&info` 对象传递给 `gst_video_decoder_set_output_state()` 函数,而不是 `gst_video_codec_state_new()` 函数。
你可以根据你的具体需求调整 `GstVideoInfo` 对象的属性,以便与你的视频流格式和编码器参数匹配。
阅读全文