我试图让NDK调试器工作但到目前为止没有成功.
为了确保我的调试符号存在且有效,我使用编译器选项-O0和-g,以及ndk-build参数NDK_DEBUG = 1.
ndk-gdb脚本运行时没有问题并启动GDB.什么时候执行"sharedlibrary"命令,我得到这个:
Symbols already loaded for /bla/bla/libMySharedLib.so
Run Code Online (Sandbox Code Playgroud)
但是当我尝试断开执行或者例如添加一个段错误来测试时,我从来没有从调用堆栈中的那个库中获得任何符号.我得到的唯一符号来自libc,如果我在等待互斥锁的情况下中断执行.还尝试添加断点,没有运气.GDB允许我添加断点,代码运行正常,但断点永远不会被触发.
我正在使用API级别8,因为我需要支持Android 2.2(Froyo).
我正在通过DirectShow实现实时视频捕获,以进行实时处理和显示.(增强现实应用程序).
我可以很容易地访问像素,但似乎我无法让SampleGrabber提供RGB数据.该设备(iSight - 在VMWare中运行VC++ Express)仅报告MEDIASUBTYPE_YUY2.
经过广泛的谷歌搜索,我仍然无法弄清楚DirectShow是否应该为这种事情提供内置的色彩空间转换.有些网站报告没有内置YUV < - > RGB转换,其他网站报告您只需要在ISampleGrabber上使用RGB子类型调用SetMediaType.
非常感谢任何建议,我对这一点感到疯狂.代码如下.请注意
我知道我可以实现自己的转换过滤器,但这是不可行的,因为我必须预测每种可能的设备格式,这是一个相对较小的项目
// Playback
IGraphBuilder *pGraphBuilder = NULL;
ICaptureGraphBuilder2 *pCaptureGraphBuilder2 = NULL;
IMediaControl *pMediaControl = NULL;
IBaseFilter *pDeviceFilter = NULL;
IAMStreamConfig *pStreamConfig = NULL;
BYTE *videoCaps = NULL;
AM_MEDIA_TYPE **mediaTypeArray = NULL;
// Device selection
ICreateDevEnum *pCreateDevEnum = NULL;
IEnumMoniker *pEnumMoniker = NULL;
IMoniker *pMoniker = NULL;
ULONG nFetched = 0;
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
// Create CreateDevEnum to list device
hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, …Run Code Online (Sandbox Code Playgroud)camera directshow video-capture augmented-reality visual-c++
令人兴奋的 的存储库mdspan是为 C++ 标准库建议的多维类似物std::span,现在还包含密切相关的 的参考实现mdarray,与mdspan拥有其数据不同。
但是,尽管该submdspan函数可以生成 的子集mdspan,但我找不到 的类似物mdarray。submdspan我期待的是一个行为与返回完全相同的函数mdspan,但它对 进行操作mdarray。
这是有计划但尚未实施吗?如果没有,为什么不呢?
编辑:
我已经用自制解决方案暂时解决了这个问题,其形式是重载submdspan,mdarray然后创建一个映射mdspan到整个 的临时文件mdarray,并调用submdspan它。
现在它可以完成工作了!但我不确定这是否涵盖了所有可能的情况mdarray,因为目前几乎没有文档。仍然希望得到原来问题的答案。
template <class ElementType, class Extents, class LayoutPolicy, class... SliceSpecs>
auto submdspan(
mdarray<ElementType, Extents, LayoutPolicy> &arr,
SliceSpecs... slices)
{
return submdspan(
mdspan<ElementType, Extents, LayoutPolicy>(arr.data(), arr.mapping()),
slices...);
}
Run Code Online (Sandbox Code Playgroud) 下面,我的TestStruct实例包装在两个容器中: a Box,然后是 a Vec。从 Rust 新用户的角度来看,令人惊讶的是,将 移至Box使得Vec和Box实例TestStruct都可变。
struct TestStruct { value: i32 }
fn test_fn() {
let immutable_instance = TestStruct{value: 123};
let immutable_box = Box::new(immutable_instance);
let mut mutable_vector = vec!(immutable_box);
mutable_vector[0].value = 456;
}
Run Code Online (Sandbox Code Playgroud)
是否有类似的构造,其中装箱值是不可变的,但盒子的容器是可变的?更一般地说,是否可以拥有多个容器“层”,而整个树不可变或不可变?
android ×1
android-ndk ×1
c++ ×1
camera ×1
containers ×1
directshow ×1
gdb ×1
immutability ×1
mdspan ×1
rust ×1
std ×1
symbols ×1
visual-c++ ×1