小编ler*_*mjs的帖子

64位iOS设备上的asm("陷阱")

在我自己开发的断言宏中,我一直在iOS设备上使用asm("陷阱")(或在iOS模拟器上使用asm("int3")来打破调试器.但是,在64位版本的设备中,我得到了陷阱指令的"无法识别的指令助记符".arm64有同等效力吗?

(像__builtin_trap()或raise(SIGINT)这样的替代品可以工作,但有一些我不喜欢的行为;前者不会让你继续经过休息,而后者是一个功能所以你总是在下面一步当你休息时你需要在堆栈中.)

ios arm64

11
推荐指数
1
解决办法
1518
查看次数

使用iPhone相机作为亮度传感器

我正在尝试使用前置摄像头作为亮度传感器(显然没有用于调整屏幕亮度的单独亮度传感器的公共API).

我已设法使用AVCaptureVideoOutput设置视频捕获会话并从视频中抓取帧,并计算帧中的亮度.但是,相机会不断调整曝光设置以补偿亮度,这对于录制视频非常有意义,但却无法获得实际的亮度值.

例如,如果我将手指放在相机上,亮度值会快速下降到0,但几秒后它会在相机补偿时再次爬回来.

那么......有没有办法手动设置曝光并禁用自动调整?我尝试设置AVCaptureDevice.exposureMode,但它似乎没有任何区别.

或者,是否有办法以某种方式从捕获输出中获取曝光信息,因此我可以适当地偏置亮度计算?

更新:我能够以这种方式获得EXIF信息; 现在我只需要弄清楚如何偏向亮度计算.

NSDictionary* dict = (NSDictionary*) CMGetAttachment(sampleBuffer, kCGImagePropertyExifDictionary, NULL);
NSString* exp = [nsDict objectForKey:@"ExposureTime"];
Run Code Online (Sandbox Code Playgroud)

iphone ios

10
推荐指数
1
解决办法
1984
查看次数

Audio Graph渲染回调在音频会话中断后停止调用

我在iOS上使用音频单元处理图形服务来创建一个音频单元的小图形来输出音频.我设置了一个渲染回调,并在调用回调时将音频数据输入到图形中.

这可以正常工作,直到我的音频会话中断(例如通过电话或闹钟); 此时回调停止,即使在中断结束后也不会再次调用.

我尝试在图表上再次调用AUGraphStart(),但这似乎没有帮助.有任何想法吗?

core-audio audiosession audiounit ios

4
推荐指数
1
解决办法
849
查看次数

如何使表格行在 Angular 2 中表现为超链接

我有一个表格行,当点击它时,会将用户带到一个新页面:

<tr routerLink="/users/{{user.id}}">
  <!-- ... a bunch of cells with user name, etc -->
</tr>
Run Code Online (Sandbox Code Playgroud)

这工作正常,但由于它不是实际的 HTML 链接,因此它的行为与浏览器中的完全不同(例如,没有选项可以在新选项卡中打开链接)。

我尝试将每个<td>元素包装在 an 中<a>并使用 CSS 删除链接样式,它的行为类似于链接,但仅当鼠标悬停在表格单元格中的文本上时。

有没有另一种方法可以让表格行表现得更像超链接?

html angular

4
推荐指数
1
解决办法
6994
查看次数

如何退出后台线程循环?

我有一个后台线程用于上传文件.它循环运行; 它做了一些工作,然后睡觉直到超时过去或直到通过条件变量明确通知有更多的工作要做.问题是有时候我无法让线程快速退出.

这是一个简化版本:

    std::thread g_thread;
    std::mutex g_mutex;
    std::condition_variable g_cond;
    bool g_stop = false;

    void threadLoop()
    {   
        while (!g_stop)
        {   
            printf("doing some stuff\n");
            std::unique_lock<std::mutex> lock(g_mutex);
            g_cond.wait_for(lock, std::chrono::seconds(15));
        }   
    }   

    int main(int argc, char* argv[])
    {           
        g_stop = false;
        g_thread = std::thread(threadLoop);

        printf("hello\n");

        g_stop = true;
        g_cond.notify_one();
        g_thread.join();
    }
Run Code Online (Sandbox Code Playgroud)

当我运行这个测试程序时,我希望它能够快速退出,但有时它会卡在wait_for()中.我想也许在线程在wait_for()中休眠之前发生了notify_one(),但是在检查了g_stop之后.

是否有一个简单的解决方案,或其他更好的设计模式?

c++ multithreading stl condition-variable stdthread

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