如何在函数fn中强制obj-> val1指向的内存的常量?
#include <iostream>
struct foo {
int* val1;
int* val2;
int* val3;
};
void fn( const foo* obj )
{
// I don't want to be able to change the integer that val1 points to
//obj->val1 = new int[20]; // I can't change the pointer,
*(obj->val1) = 20; // But I can change the memory it points to...
}
int main(int argc, char* argv[])
{
// I need to be able to set foo and pass its value in …
Run Code Online (Sandbox Code Playgroud) 因此,任何在Android开发社区中值钱的人都知道有关Android中低延迟音频的问题3434.对于那些不这样做的人,你可以在这里自学.http://code.google.com/p/android/issues/detail?id=3434
我正在为我的个人项目寻找任何类型的临时解决方法.我已经听说过通过滚动你自己的android构建和修改NDK来暴露私有接口到NDK.
我只需要一种方法来访问已经与标准2.2版本打包的低级别alsa驱动程序.我希望能够将PCM直接发送到我设备上的音频硬件.我不关心生成的应用程序不会在市场上分发,并且可能不会与我的任何其他设备一起运行.
有人有什么有用的想法吗?
-Griff
编辑:我应该提一下,我知道AudioTrack提供了这个功能,但是我想要更低的延迟 - AudioTrack大约300ms,我想要大约20-30毫秒.
我有一个PCM数据阵列,它可以是16位,24位打包,32位等.它可以是有符号或无符号的,它可以是32位或64位浮点数.它目前存储为"void**"矩阵,由通道索引,然后按帧索引.目标是允许我的库采用任何PCM格式并缓冲它,而不需要操纵数据以适合指定的结构.如果A/D转换器吐出24位压缩交错PCM阵列,我需要优雅地接受它.我还需要支持16位非交错,以及上述格式的任何排列.
我在运行时知道位深度和其他信息,我正在尝试有效编码而不重复代码.我需要的是一种有效的方法来投射矩阵,将PCM数据放入矩阵,然后再将其拉出.
我可以将矩阵分别转换为int32_t或int16_t分别用于32位和16位带符号的PCM,我可能必须将24位PCM存储在int32_t中,用于32位,8位字节系统.
任何人都可以推荐一种将数据放入这个数组的好方法,然后将其拉出来吗?我想避免大部分代码看起来像:
switch( mFormat )
{
case 1: // unsigned 8 bit
for( int i = 0; i < mChannels; i++ )
framesArray = (uint8_t*)pcm[i];
break;
case 2: // signed 8 bit
for( int i = 0; i < mChannels; i++ )
framesArray = (int8_t*)pcm[i];
break;
case 3: // unsigned 16 bit
...
Run Code Online (Sandbox Code Playgroud)
限制:我使用的是C/C++,没有模板,没有RTTI,没有STL.想想嵌入式.当我必须将其移植到具有16位字节的DSP时,事情变得棘手.
有没有人有他们愿意分享的有用的宏?
谢谢,
-Griff
我正在开发一款需要插件的Android应用.这些插件本质上是我的应用程序使用的资产包.我最初可能会创建大部分资产包插件,但我希望其他开发人员能够为我的应用创建(和销售)这些资产包.如果需要,可以将这些资产插件视为Minecraft的纹理包.这些资产包每个大约50 MB,因此将它们与应用程序打包是没有意义的.
我想要这样做的方式:
问题
问题存在于步骤4.我找不到任何方法从我的应用程序内查询商店(即使没有通配符).我确实找到了这个"android-market-api"项目,它允许我从我的应用程序中查询市场,但它似乎需要一个Google服务用户名和密码,我必须从用户查询.这是一个非首发.
问题