游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3067|回复: 4

[OGG]如何获得解压后的采样数据大小? (非FILE方式)

[复制链接]

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
发表于 2013-2-4 00:33:35 | 显示全部楼层 |阅读模式
FILE的方式,可以用ov_pcm_total()以及相关参数计算得出,
但是我的OGG数据在一段buffer里,那要怎么获得解压后的采样数据大小?


PS:我目前用的是ogg最新版(libogg-1.3.0和libvorbis-1.3.3)

6

主题

74

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
发表于 2013-2-4 13:46:21 | 显示全部楼层
好像无法获得,因为是可变码率编码的。
ogg的实例代码里面是每次alloc 2倍大小的空间,如果写满了就重新分配X2

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
 楼主| 发表于 2013-2-4 14:49:18 | 显示全部楼层
本帖最后由 微无渊 于 2013-2-4 14:50 编辑
Kevin_Qing 发表于 2013-2-4 13:46
好像无法获得,因为是可变码率编码的。
ogg的实例代码里面是每次alloc 2倍大小的空间,如果写满了就重新分 ...

那为什么FILE的方式,能够预先获得大小?

让我不能理解的是,这么一个重要的数据,为什么不存储到文件信息头里,

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
 楼主| 发表于 2013-2-4 16:01:49 | 显示全部楼层
跟了一下ogg的ov_open_callbacks()函数,大致了解到,采样数据的长度被存储在了OggVorbis_File结构体的pcmlengths成员内,而且,是通过循环计算得出.

本想扩展一下他这个接口,可是一想到,如果将来要升级ogg,那么这个扩展版,也将被作废掉,
想来想去,倒不如,把"采样数据总大小"这个数据留给应用层来提供,

0

主题

4

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2013-9-2 08:33:37 | 显示全部楼层
求 ogg 边解压边播放 或者 搞的跟流一样 一段一段 的 解压播放
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-15 03:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表