美文网首页iOS开发笔记
DLNA-DMR-Platinum编译

DLNA-DMR-Platinum编译

作者: Weller0 | 来源:发表于2018-06-02 11:12 被阅读325次

1、下载Platinum源码

git clone git@github.com:plutinosoft/Platinum.git

2、配置NDK环境

打开环境变量配置文件

gedit ~/.bashrc

增加ANDROID_NDK_ROOT变量

export ANDROID_NDK_ROOT=/home/weller/software/android-ndk-r11b

3、编译Platinum静态文件

需要先安装scons

sudo apt install scons

编译命令

scons target=arm-android-linux build_config=Release

target:['arm-unknown-linux', 'x86-unknown-cygwin', 'arm-android-linux', 'x86-unknown-linux', 'arm-gp2x-linux']
build_config:['Release', 'Debug']

问题

sh: 1: arm-linux-androideabi-g++: not found

解决方法

修改Build/Targets/arm-android-linux/Config.scons的

PLATFORM_TO_TARGET_MAP = { 
'linux-i386' : 'linux-x86',
'linux2' : 'linux-x86',
...
}

-->

PLATFORM_TO_TARGET_MAP = { 
'linux-i386' : 'linux-x86_64',
'linux2' : 'linux-x86_64',
...
}
问题

ThirdParty/Neptune/Source/Core/NptUtils.h:46:19: fatal error: stdio.h: No such file or directory

解决方法

ANDROID_NDK_ROOT的版本问题,尝试android-ndk-r11b可用,最新版的ndk不可用

4、编译jni动态库

cd Source/Platform/Android/module/platinum/jni
ndk-build NDK_DEBUG=0
问题

PltTaskManager.h:45:21: fatal error: Neptune.h: No such file or directory #include "Neptune.h"

解决方法

打开Source/Platform/Android/module/platinum/jni/Android.mk
修改Neptune三方库头文件目录

$(PLT_ROOT)/../Neptune/Source/Core

--->

$(PLT_ROOT)/ThirdParty/Neptune/Source/Core

5、生成so位置

Source/Platform/Android/module/platinum/libs/

6、增加UpdateServices接口

在Source/Devices/MediaRenderer/PltMediaRenderer.h的PLT_MediaRenderer类中增加接口

virtual NPT_Result UpdateServices(const char* value,const char* data);

在Source/Devices/MediaRenderer/PltMediaRenderer.cpp增加实现

/*----------------------------------------------------------------------
|   PLT_MediaRenderer::UpdateServices add by weller
+---------------------------------------------------------------------*/
NPT_Result
PLT_MediaRenderer::UpdateServices(const char* value,const char* data){
    PLT_Service* serviceUpdate;
    if(FindServiceByType("urn:schemas-upnp-org:service:AVTransport:1", serviceUpdate) == NPT_ERROR_NO_SUCH_ITEM){
        //LOGI("cant find PLT_Service.....");
        return NPT_FAILURE;
    }
    //LOGI("\n----UpdateServices----value =%s data =%s\n",value,data);
    if(*(value+2) == ':' && *(value+5) == ':'){
        if(*(data+0) == 'd'){
            serviceUpdate->SetStateVariable("CurrentTrackDuration", value);
            serviceUpdate->SetStateVariable("CurrentMediaDuration", value);
        }
        else{
            serviceUpdate->SetStateVariable("RelativeTimePosition", value);
            serviceUpdate->SetStateVariable("AbsoluteTimePosition", value);
        }
    }else{
        serviceUpdate->SetStateVariable("TransportState", value);
    }
    return NPT_SUCCESS;
}

相关文章

  • DLNA-DMR-Platinum编译

    1、下载Platinum源码 2、配置NDK环境 打开环境变量配置文件 增加ANDROID_NDK_ROOT变量 ...

  • dtb文件编译

    反编译 编译 批量反编译

  • 编译过程与静态库&动态库

    一、编译过程 1、预编译(Preprocessing) 预编译即预处理,编译器不能直接对预编译命令进行编译,必须在...

  • 宏、const、static、extern使用详解

    宏与const的区别 编译时刻:宏是预编译(编译之前处理),const是编译阶段。编译检查:宏不做检查,不会报编译...

  • iOS const 与宏

    编译时刻:宏是预编译(编译之前处理),const是编译阶段。 编译检查:宏不做检查,不会报编译错误,只是替换,co...

  • 2020-09-09 RK系统编译

    编译uboot: 编译kernel: 环境配置: 编译系统:

  • 程序编译过程

    本文编译的文件cpu架构为X86_64。 编译型语言编译过程主要有预编译、编译、汇编、链接。 预编译This st...

  • 自己动手编译OpenJDK

    Linux下 编译 Centos 下编译OpenJDK Mac下编译 MacOS 下编译OpenJDK Windo...

  • 宏 const static extern的区别与使用

    一. const 与 宏的区别 编译时刻: 宏是预编译(编译之前处理), const是编译阶段处理 编译检查: 宏...

  • 晚期(运行期)优化

    HotSpot的即时编译器 解释器与编译器 编译对象与触发条件 编译过程 编译优化技术 如果还对其他的经典编译优化...

网友评论

    本文标题:DLNA-DMR-Platinum编译

    本文链接:https://www.haomeiwen.com/subject/qqtrsftx.html