小编Gri*_*fin的帖子

C/C++:Const Struct中的指针

如何在函数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)

c c++ struct pointers const

8
推荐指数
2
解决办法
4038
查看次数

Android音频延迟解决方法

因此,任何在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毫秒.

audio android android-ndk

8
推荐指数
1
解决办法
4178
查看次数

Void*数组转换为float,int32,int16等

我有一个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

c c++ embedded audio pcm

7
推荐指数
1
解决办法
2072
查看次数

Android应用内购买插件?

我正在开发一款需要插件的Android应用.这些插件本质上是我的应用程序使用的资产包.我最初可能会创建大部分资产包插件,但我希望其他开发人员能够为我的应用创建(和销售)这些资产包.如果需要,可以将这些资产插件视为Minecraft的纹理包.这些资产包每个大约50 MB,因此将它们与应用程序打包是没有意义的.

我想要这样做的方式:

  1. 开发人员创建名为特定东西的插件资产APK(org.name.app_name.plugin.{MY_ASSET_PACK})
  2. 开发者申请自己的Google Play开发者帐户,并在"库和演示"部分中以自己的名义列出资产包(免费或付费).
  3. 我的应用程序向Google Play查询与查询字符串(org.name.app_name.plugin.*)匹配的所有apk包(免费或付费),并将其列在应用程序用户的"过滤市场视图"中,允许他们使用轻松找到应用程序的插件.
  4. 用户可以在我的"过滤市场视图"中点击这些条目,然后直接重定向到Google Play市场并通过Play进行购买,开发人员可以通过此交易获得补偿.购买的资产插件apk被下载到用户的设备,并且不会显示在启动器中.(请参阅如何发布应用程序插件)
  5. 我的应用程序索引手机上与查询字符串(org.name.app_name.plugin.*)匹配的包,并将它们放在"插件选择器视图"中供用户选择.
  6. 我的应用程序加载并使用此插件中的资源(请参阅如何发布应用程序插件)

问题

问题存在于步骤4.我找不到任何方法从我的应用程序内查询商店(即使没有通配符).我确实找到了这个"android-market-api"项目,它允许我从我的应用程序中查询市场,但它似乎需要一个Google服务用户名和密码,我必须从用户查询.这是一个非首发.

问题

  • 有没有一种简单的方法来解决这个问题,并直接在我的应用程序中的列表中获取市场查询?
  • 这是处理应用程序插件的错误方法吗?
  • 有没有办法使用现有的应用程序内购买API来处理这个问题,而无需为这些软件包维护我自己的服务器?

plugins android in-app-purchase google-play

7
推荐指数
1
解决办法
607
查看次数