/* Parse the SPS/PPS in ISOM format in extradata. */ pb = avio_alloc_context(extradata, extradata_size, 0, NULL, NULL, NULL, NULL); if (!pb) return -1; version = avio_r8(pb); /* version */ avio_r8(pb); /* avc profile */ avio_r8(pb); /* avc profile compat */ avio_r8(pb); /* avc level */ nal_length_size = avio_r8(pb); /* 6 bits reserved (111111) + 2 bits nal size length - 1 (11) */ nb_sps = avio_r8(pb); /* 3 bits reserved (111) + 5 bits number of sps */这段怎么改写成gstreamer代码
时间: 2024-02-25 11:57:43 浏览: 264
在GStreamer中,可以使用`GstByteReader`类型的变量来读取`extradata`中的字节数据。可以使用`gst_byte_reader_new()`函数创建一个`GstByteReader`类型的变量,并使用`gst_byte_reader_set_pos()`函数设置读取位置。然后,可以使用`gst_byte_reader_get_uint8()`函数来逐个读取字节数据。因此,上述代码可以改写成以下形式:
```
GstByteReader *reader = gst_byte_reader_new(extradata, extradata_size);
if (!reader)
return -1;
version = gst_byte_reader_get_uint8(reader); /* version */
gst_byte_reader_get_uint8(reader); /* avc profile */
gst_byte_reader_get_uint8(reader); /* avc profile compat */
gst_byte_reader_get_uint8(reader); /* avc level */
nal_length_size = gst_byte_reader_get_uint8(reader); /* 6 bits reserved (111111) + 2 bits nal size length - 1 (11) */
nb_sps = gst_byte_reader_get_uint8(reader); /* 3 bits reserved (111) + 5 bits number of sps */
```
在读取字节数据之后,应该使用`gst_byte_reader_free()`函数释放`GstByteReader`类型的变量。
阅读全文