例如Amlogci方案:

Item S801 S802 S805 S812
CPU Quad Cortex-A9r4 Quad Cortex-A9r4 Quad Cortex-A5 Quad Cortex-A9r4
Max CPU Freq 2.0G Hz 2.0G Hz 1.5G Hz 2.0G Hz
GPU Octo Mali-450 Octo Mali-450 Quad Mali-450 Octo Mali-450
Security TrustZone & TVP TrustZone & TVP TrustZone & TVP TrustZone & TVP
Memory DDR3/3L Dual DDR3/3L DDR3/3L Dual DDR3/3L
Video decoding 1080P 4K2K 1080P H265 4K2K H265
Video Encoding 1080P H264 1080P H264 1080P H264 1080P H264
HDMI-Tx 1080P 4K2K 1080P 4K2K
Ethernet 10/100M 10/100M 10/100/1000M 10/100/1000M
AV output CVBS CVBS CVBS CVBS
DTV support TS in TS in TS in TS in
IP License Dolby,DTS,SRS Dolby,DTS,SRS Dolby,DTS,SRS Dolby,DTS,SRS

一、Get the code From amlogic

$ cd ~/-android-repo-dir>/$ repo init -u ssh://git@openlinux.amlogic.com/kitkat/platform/manifest.git -bkk-amlogic --repo-url=ssh://git@openlinux.amlogic.com/repo.git$ repo sync$ repo init -m openlinux_kk-amlogic_20140823.xml$ repo sync

Mbox:

· K200 (S801/S802), including:

K200-A: SPI + NAND + USB WIFI 8188K200-B : SPI + EMMC + SDIOWIFI AP6330

· N200(S812)

EMMC + SDIO WIFI 6234,DDR 2GB

· M200(S805)

PMU1218,EMMC,WIFI AP6335, DDR 1GB

· M201(S805)

No PMU,NAND,WIFI AP6210, DDR 1GB

· M202(S805 dongle)

No PMU,NAND,WIFI 8723BS, DDR 512M

二、How to build code

  1. Mbox k200
(1)k200-A-1G. build/envsetup.shlunch k200-userexport BOARD_REVISION=amake otapackage(2)k200-A-2G. build/envsetup.shlunch k200-userexport BOARD_REVISION=a_2Gmake otapackage(3)K200-B-1G. build/envsetup.shlunch k200-userexport BOARD_REVISION=bmake otapackage(4)k200-B-2G. build/envsetup.shlunch k200-userexport BOARD_REVISION=b_2Gmake otapackageuboot config: m8_k200_v1_config(if need compile 2G uboot, you must change the“#define CONFIG_DDR_SIZE1024”to “#define CONFIG_DDR_SIZE 2048” of “m8_k200_v1.h”)
  1. Mbox N200
. build/envsetup.shlunch n200-usermake otapackageuboot config: m8m2_n200_v1_config
  1. Mbox M200
. build/envsetup.shlunch m200-usermake otapackageuboot config: m8b_m200_1G_config
  1. Mbox M201
. build/envsetup.shlunch m201-usermake otapackageuboot config:m8b_m201_1G_config
  1. Mbox M202
. build/envsetup.shlunch m202-usermake otapackageuboot config: m8b_m202_512M_config

三、How to Upgrade

There are 4 ways for update.
· Upgrade with SD card

Follow instructions below ONLY IF your device is already running a version of Openlinux
based Android 4.4 reference firmware release.
4 steps:

1) Copy recovery.img, update zip file (e.g. k100-ota-20140127.zip) to SD card.2) Copy the factory_update_param.aml to SD card;3) Power off.4) Press VOL- and POWER key at same time, then it will upgrade the code.

· Upgrade with USB burn tool
· Update with OTA
· Use bootcard PC tool to make a boot TF card by bin file aml_upgrade_package.img

2 steps:

1)Insert TF card then Power off2)Press VOL- and POWER key at same time, then it will upgrade the code.

2. Key Module Integration

This section introduces the key modules that are supported by the current Openlinux release and reference document regarding how to integrate the modules. The user can get all the documents from your Sales contact window.

2.1. DRM Support

The current Openlinux release supports the three major DRMs: Widevine level1, Level3, PlayReady, Marlin.
Reference documents:

Document Description
Amlogic WideVine Integration User Guide v0.1 Widevine L1, L3 integration
Amlogic PlayReady Integration User Guide v0.2 PlayReady integration
Amlogic Marlin Integration User Guide v0.1 Marlin integration

2.2. Secure OS support

The secure OS boots before the normal world to set up secure perimeters. It can run from the secure partitioned internal SRAM or DDR memory and by secure register settings, only the secure OS, running in secure world has the access to its own resources, such as the memory and the EFUSE storage, or decrypted audio and video data,even the decoded video frame pixel data.
The implementation of the secure OS is based on ARM TrustZone security extensions. The service tasklet inside the secure OS can handle the crypto operations, such as the decryption of the Audio and Video data, with the final asset key exist in the secure world only and is never be exposed to the normal world.
Reference documents:

Document Description
Amlogic Security Architecture Guide & TVP V0.5 Introduction of Amlogic Security Architecture

2.3. CM, DNLP and NR Support

There are some Video post processing control in Amlogic chip can improve the display quality and effect include
CM, DNLP, NR:
DNLP (Dynamic Non-Linear Processing): Dynamically adjust the contrast of the screen and increase the bright and dark contrast of the screen
CM (color management): Color management module, you can adjust of hue, saturation, color and brightness according to the requirements.
NR(noise reduction): Noise reduction module to reduce noise in the picture
DNLP

Step1: Enable VDIN module before video playback:echo 1 > /sys/module/di/parameters/mpeg2vdin_enStep2: Enable or Disable DNLP

Enable DNLP:

echo 1 > /sys/module/am_vecm/parameters/dnlp_en

Disable DNLP:

echo 0 > /sys/module/am_vecm/parameters/dnlp_enAmlogic Openlinux Release NotesAmlogic Confidential 10

CM

Step 1: Enable or Disable CMEnable CM:echo 1 > /sys/module/am_vecm/parameters/cm_en

Disable CM:

echo 0 > /sys/module/am_vecm/parameters/cm_enStep 2: Change the CMtable(val:1=level1;2=level2;4=enhancement)echo val > /sys/module/am_vecm/parameters/cm_level

NR

Step 1: Enable or Disable NR

Enable NR:

echo 1 > /sys/module/di/parameters/nr2_en

Disable NR:

echo 0 > /sys/module/di/parameters/nr2_en

2.4. SDHC Controller Support

The SD Host Controller (SDHC) has the following features:

1) Support SD Spec 3.01, eMMC Spec 4.5x , support SDSC, SDHC, SDXC memory card2) Provide UHS-I both 3.3V and 1.8V signaling, and support DS, HS, SDR12, SDR25, SDR50, SDR104 speedmode3) Has AHB slave and master interface , support DMA and PIOmode4) Back compatible to SD Spec 2.0 and 1.05) Only support SD mode, do not support SPI mode6) Support 1-bit, 4-bit, 8-bit bus width mode(8-bit bus width only for MMC)

Reference documents:

Document Description
Amlogic SDHC controller User Guide v0 1 How to configure SDHC controller

2.5. Dolby DD, DD+/DTS Support

Amlogic supports Dolby DD, DD+, DS1 and DTS DTS-HD/Digital Out/DTS Broadcast with certified SoCs.Note: The certified SoCs can only be used for Dolby/DTS licensees.

Reference documents:

Document Description
Amlogic Dolby DD DD+ DTS User Guide v0.1 How to integrate DD, DD+, DTS

2.6. Supported Video/Audio Formats

All the mainstream video and audio formats are supported.
Reference documents:

Document Description
Multimedia CODEC Benchmark M801 S801 20131010 M801/S801 Multimedia support list
Multimedia CODEC Benchmark M802 S802 20131010 M802/S802 Multimedia support list
Multimedia CODEC Benchmark M805 M806 S805 20140623 M805/M806/S805 Multimedia support list
Multimedia CODEC Benchmark M812 S812 20140807 M812/S812 Multimedia support list

2.7. Streaming Protocols Integration

This release version supports the following streaming Protocols:
UDP:

Support Unicast&Multicast(IGMP);Support IPV6 Muticast; need set this prop : media.libplayer.ipv4only =0Support streammuxed by ts;Support all a/v codec muxted to mpegts

;
RTP:

Over udp or udp-muticast;Support ts(all codec muxed by ts);Support es(h264/mpeg4/mpeg2/aac/mp3/ac3)

rtsp:

The Real Time Streaming Protocol (RTSP) is a network control protocol designed for use in entertainment andcommunications systems to control streaming media servers. The protocol is used for establishing andcontrolling media sessions between end points. Clients of media servers issue VCR-style commands, such asplay and pause, to facilitate real-time control of playback of media files fromthe server.Support data steam over UDP&TCP;Support data format same as RTP:

mms:

Microsoft Media Server (MMS), a Microsoft proprietary network-streaming protocol, serves to transfer unicast data in Windows Media Services (previously called NetShow Services). MMS can be transported via UDP or TCP. The MMS default port is UDP/TCP 1755 Support mms media over http,or named mmsh;

RTMP:

Real Time Messaging Protocol, a multimedia streaming and remote procedurecall protocol primarily used inAdobe Flash

http:

Media steam over http;Support feature:https,gzip,keep-alive;

mpeg-dash:

Dynamic Adaptive Streaming over HTTP (DASH), also known as MPEG-DASH, is an adaptive bitrate streamingtechnique that enables high quality streaming of media content over the Internet delivered from conventionalHTTP web servers.

hls:

HTTP Live Streaming (also known as HLS/M3U8) is an HTTP-based media streaming communications protocolimplemented by Apple Inc.Supported feature:http, https, AES, auto adaption, VOD, Livemode;seek in segment,ts,mp4,flv

2.8. WIFI/BT Integration

Amlogic platform supports the complete WIFI/BT solutions including 802.11ac/a/b/g/n, BT 2.1/4.0, NFC and GPS. The specific qualified parts can be found in Amlogic Tablet/MBOX QPL documents.

Reference documents:

Document Description
Amlogic USB WiFi User Guide v0.1 How to config USB WiFi
晶晨半导体SDIO WIFI 用户指南v0.1 How to config SDIO WiFi

2.9. Ethernet/PPPOE integration

Amlogic S8 series SoC has built-in Ethernet RMII MAC interface to reduce BOM cost and S805/S812 can also support RGMII interface. Several Ethernet PHY including both RMII and RGMII has been verified. By checking with ATKKPing and IPERF test tools, the reference design can meet with IEEE802.3 standard and the electrical specifications.

The Point-to-Point Protocol over Ethernet (PPPoE) is a network protocol for encapsulating PPP frames inside Ethernet frames.

PPPoE relies on two widely accepted standards: PPP and Ethernet. PPPoE is a specification for connecting the
users on an Ethernet to the Internet through a common broadband medium, such as a single DSL line, wireless
device or cable modem. All the users over the Ethernet share a common connection, so the Ethernet principles
supporting multiple users in a LAN combine with the principles of PPP, which apply to serial connections.

PPP can provide connection authentication, transmission encryption, and compression.
Steps to connect

1) Get Username and password fromyour Internet service provider (ISP):2) Make sure that the DSL or cable modem is on and connected to the Internet and that the Ethernet cable is connected to the Box.3) Type your username and password in PPPoE Settings.4) Click Apply Now.5) Open a web browser or other Internet (TCP/IP) application to verify your connection.
diff --git a/tools/depends/target/libamplayer/Makefile b/tools/depends/target/libamplayer/Makefileold mode 100644new mode 100755index 10cac01..c0b7db0--- a/tools/depends/target/libamplayer/Makefile+++ b/tools/depends/target/libamplayer/Makefile@@ -6,8 +6,6 @@ all: .installed-$(PLATFORM) .patched-$(PLATFORM): $(DEPS) rm -rf $(PLATFORM); mkdir -p $(PLATFORM) cp -rf libamplayer $(PLATFORM)/-cd $(PLATFORM); patch -p1 < ../android-4.0-to-4.1.patch-cd $(PLATFORM); patch -p1 < ../android-4.1-to-4.2.patch touch $@  .installed-$(PLATFORM): .patched-$(PLATFORM)diff --git a/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/aformat.h b/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/aformat.hold mode 100644new mode 100755index 25cb852..69dfc89--- a/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/aformat.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/aformat.h@@ -57,6 +57,10 @@ typedef enum {          AFORMAT_VORBIS    = 18,     AFORMAT_AAC_LATM   = 19,     AFORMAT_APE   = 20,+    AFORMAT_EAC3   = 21,+    AFORMAT_PCM_WIFIDISPLAY = 22,+    AFORMAT_DRA    = 23,+    AFORMAT_SIPR   =24,     AFORMAT_UNSUPPORT ,     AFORMAT_MAX     @@ -75,15 +79,27 @@ typedef enum {       ||(afmt == AFORMAT_AMR)\  ||(afmt == AFORMAT_ALAC)\  ||(afmt == AFORMAT_AC3) \+ ||(afmt == AFORMAT_EAC3) \  ||(afmt == AFORMAT_APE) \- ||(afmt == AFORMAT_FLAC) )+ ||(afmt == AFORMAT_FLAC) \+ ||(afmt == AFORMAT_PCM_WIFIDISPLAY) \+ ||(afmt == AFORMAT_COOK) \++ ||(afmt == AFORMAT_RAAC))   #define IS_AUDIO_NOT_SUPPORT_EXCEED_2CH(afmt) ((afmt == AFORMAT_RAAC) \ ||(afmt == AFORMAT_COOK) \-||(afmt == AFORMAT_FLAC))+/*||(afmt == AFORMAT_FLAC)*/)++#define IS_AUDIO_NOT_SUPPORT_EXCEED_6CH(afmt) ((afmt == AFORMAT_WMAPRO))+#define IS_AUDIO_NOT_SUPPORT_EXCEED_FS48k(afmt) ((afmt == AFORMAT_WMAPRO))  #define IS_AUIDO_NEED_PREFEED_HEADER(afmt) ((afmt == AFORMAT_VORBIS) )+#define IS_AUDIO_NOT_SUPPORTED_BY_AUDIODSP(afmt,codec)  \+((afmt == AFORMAT_AAC_LATM || afmt == AFORMAT_AAC) \+ &&codec->profile == 0/* FF_PROFILE_AAC_MAIN*/)++#define IS_SUB_NEED_PREFEED_HEADER(sfmt) ((sfmt == CODEC_ID_DVD_SUBTITLE) )  #endif /* AFORMAT_H */ diff --git a/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/amstream.h b/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/amstream.hold mode 100644new mode 100755index 09f6a4a..be31995--- a/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/amstream.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/amstream.h@@ -83,6 +83,7 @@ #define AMSTREAM_IOC_SET_DEC_RESET _IOW(AMSTREAM_IOC_MAGIC, 0x1c, int) #define AMSTREAM_IOC_TS_SKIPBYTE _IOW(AMSTREAM_IOC_MAGIC, 0x1d, int) #define AMSTREAM_IOC_SUB_TYPE    _IOW(AMSTREAM_IOC_MAGIC, 0x1e, int)+#define AMSTREAM_IOC_CLEAR_VIDEO    _IOW(AMSTREAM_IOC_MAGIC, 0x1f, int) #define AMSTREAM_IOC_APTS             _IOR(AMSTREAM_IOC_MAGIC, 0x40, unsigned long) #define AMSTREAM_IOC_VPTS             _IOR(AMSTREAM_IOC_MAGIC, 0x41, unsigned long) #define AMSTREAM_IOC_PCRSCR           _IOR(AMSTREAM_IOC_MAGIC, 0x42, unsigned long)@@ -96,10 +97,43 @@ #define AMSTREAM_IOC_SET_PCRSCR       _IOW(AMSTREAM_IOC_MAGIC, 0x4a, unsigned long) #define AMSTREAM_IOC_GET_VIDEO_AXIS   _IOR(AMSTREAM_IOC_MAGIC, 0x4b, unsigned long) #define AMSTREAM_IOC_SET_VIDEO_AXIS   _IOW(AMSTREAM_IOC_MAGIC, 0x4c, unsigned long)+#define AMSTREAM_IOC_GET_VIDEO_CROP   _IOR(AMSTREAM_IOC_MAGIC, 0x4d, unsigned long)+#define AMSTREAM_IOC_SET_VIDEO_CROP   _IOW(AMSTREAM_IOC_MAGIC, 0x4e, unsigned long) #define AMSTREAM_IOC_SUB_NUM_IOR(AMSTREAM_IOC_MAGIC, 0x50, unsigned long) #define AMSTREAM_IOC_SUB_INFO_IOR(AMSTREAM_IOC_MAGIC, 0x51, unsigned long)-+#define AMSTREAM_IOC_GET_SCREEN_MODE _IOR(AMSTREAM_IOC_MAGIC, 0x58, int)+#define AMSTREAM_IOC_SET_SCREEN_MODE _IOW(AMSTREAM_IOC_MAGIC, 0x59, int) #define AMSTREAM_IOC_SET_DEMUX  _IOW(AMSTREAM_IOC_MAGIC, 0x90, unsigned long)+#define AMSTREAM_IOC_GET_SYNC_ADISCON_DIFF  _IOR(AMSTREAM_IOC_MAGIC, 0x83, unsigned long)+#define AMSTREAM_IOC_GET_SYNC_VDISCON_DIFF  _IOR(AMSTREAM_IOC_MAGIC, 0x84, unsigned long)+#define AMSTREAM_IOC_SET_SYNC_ADISCON_DIFF  _IOW(AMSTREAM_IOC_MAGIC, 0x85, unsigned long)+#define AMSTREAM_IOC_SET_SYNC_VDISCON_DIFF  _IOW(AMSTREAM_IOC_MAGIC, 0x86, unsigned long)+#define AMSTREAM_IOC_GET_FREERUN_MODE  _IOR(AMSTREAM_IOC_MAGIC, 0x87, unsigned long)+#define AMSTREAM_IOC_SET_FREERUN_MODE  _IOW(AMSTREAM_IOC_MAGIC, 0x88, unsigned long)+#define AMSTREAM_IOC_SET_VSYNC_UPINT   _IOW(AMSTREAM_IOC_MAGIC, 0x89, unsigned long)++#define AMSTREAM_IOC_SET_VIDEO_DELAY_LIMIT_MS _IOW(AMSTREAM_IOC_MAGIC, 0xa0, unsigned long)+#define AMSTREAM_IOC_GET_VIDEO_DELAY_LIMIT_MS _IOR(AMSTREAM_IOC_MAGIC, 0xa1, unsigned long)+#define AMSTREAM_IOC_SET_AUDIO_DELAY_LIMIT_MS _IOW(AMSTREAM_IOC_MAGIC, 0xa2, unsigned long)+#define AMSTREAM_IOC_GET_AUDIO_DELAY_LIMIT_MS _IOR(AMSTREAM_IOC_MAGIC, 0xa3, unsigned long)+#define AMSTREAM_IOC_GET_AUDIO_CUR_DELAY_MS _IOR(AMSTREAM_IOC_MAGIC, 0xa4, unsigned long)+#define AMSTREAM_IOC_GET_VIDEO_CUR_DELAY_MS _IOR(AMSTREAM_IOC_MAGIC, 0xa5, unsigned long)+#define AMSTREAM_IOC_GET_AUDIO_AVG_BITRATE_BPS _IOR(AMSTREAM_IOC_MAGIC, 0xa6, unsigned long)+#define AMSTREAM_IOC_GET_VIDEO_AVG_BITRATE_BPS _IOR(AMSTREAM_IOC_MAGIC, 0xa7, unsigned long)+#define AMSTREAM_IOC_SET_APTS                  _IOW(AMSTREAM_IOC_MAGIC, 0xa8, unsigned long)++#define AMSTREAM_IOC_GET_LAST_CHECKIN_APTS   _IOR(AMSTREAM_IOC_MAGIC, 0xa9, unsigned long)+#define AMSTREAM_IOC_GET_LAST_CHECKIN_VPTS   _IOR(AMSTREAM_IOC_MAGIC, 0xaa, unsigned long)+#define AMSTREAM_IOC_GET_LAST_CHECKOUT_APTS  _IOR(AMSTREAM_IOC_MAGIC, 0xab, unsigned long)+#define AMSTREAM_IOC_GET_LAST_CHECKOUT_VPTS  _IOR(AMSTREAM_IOC_MAGIC, 0xac, unsigned long)++#define AMAUDIO_IOC_MAGIC  'A'+#define AMAUDIO_IOC_SET_RESAMPLE_ENA        _IOW(AMAUDIO_IOC_MAGIC, 0x19, unsigned long)+#define AMAUDIO_IOC_GET_RESAMPLE_ENA        _IOR(AMAUDIO_IOC_MAGIC, 0x1a, unsigned long)+#define AMAUDIO_IOC_SET_RESAMPLE_TYPE       _IOW(AMAUDIO_IOC_MAGIC, 0x1b, unsigned long)+#define AMAUDIO_IOC_GET_RESAMPLE_TYPE       _IOR(AMAUDIO_IOC_MAGIC, 0x1c, unsigned long)+#define AMAUDIO_IOC_SET_RESAMPLE_DELTA      _IOW(AMAUDIO_IOC_MAGIC, 0x1d, unsigned long)+#define AMSTREAM_IOC_SET_DRMMODE _IOW(AMSTREAM_IOC_MAGIC, 0x91, unsigned long)  struct buf_status {          int size;diff --git a/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/vformat.h b/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/vformat.hold mode 100644new mode 100755index ed00219..294ef07--- a/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/vformat.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amcodec/amports/vformat.h@@ -49,6 +49,7 @@ typedef enum {          VIDEO_DEC_FORMAT_WVC1,     VIDEO_DEC_FORMAT_SW,     VIDEO_DEC_FORMAT_AVS,+    VIDEO_DEC_FORMAT_H264_4K2K,     VIDEO_DEC_FORMAT_MAX } vdec_type_t; @@ -64,6 +65,7 @@ typedef enum {          VFORMAT_AVS,     VFORMAT_SW,     VFORMAT_H264MVC,+    VFORMAT_H264_4K2K,     VFORMAT_UNSUPPORT,     VFORMAT_MAX } vformat_t;@@ -85,8 +87,11 @@ typedef enum {      #define CODEC_TAG_MP43      (0x3334504d) #define CODEC_TAG_M4S2      (0x3253344d) #define CODEC_TAG_DIV4      (0x34564944)+#define CODEC_TAG_divx       (0x78766964) #define CODEC_TAG_DIVX      (0x58564944) #define CODEC_TAG_DIV5      (0x35564944)+#define CODEC_TAG_3IV2      (0x32564933)+#define CODEC_TAG_3iv2      (0x32766933) #define CODEC_TAG_DX50      (0x30355844) #define CODEC_TAG_DIV6      (0x36564944) #define CODEC_TAG_RMP4      (0x34504d52)@@ -108,5 +113,7 @@ typedef enum {      #define CODEC_TAG_WVC1      (0x31435657) #define CODEC_TAG_WMVA      (0x41564d57) #define CODEC_TAG_FMP4      (0x34504d46)+#define CODEC_TAG_FVFW      (0x57465646)+#define CODEC_TAG_VC_1      (0x312d4356)  #endif /* VFORMAT_H */diff --git a/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec.h b/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec.hold mode 100644new mode 100755index 187d4d5..35c5a53--- a/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec.h@@ -87,7 +87,37 @@ int codec_get_sync_audio_discont(codec_para_t *pcodec); int codec_set_sync_video_discont(codec_para_t *pcodec, int discontinue); int codec_get_sync_video_discont(codec_para_t *pcodec); +unsigned long codec_get_sync_audio_discont_diff(codec_para_t *pcodec);+unsigned long codec_get_sync_video_discont_diff(codec_para_t *pcodec);+int codec_set_sync_audio_discont_diff(codec_para_t *pcodec, unsigned long discontinue_diff);+int codec_set_sync_video_discont_diff(codec_para_t *pcodec, unsigned long discontinue_diff);+ int codec_get_sub_num(codec_para_t *pcodec); int codec_get_sub_info(codec_para_t *pcodec, subtitle_info_t *sub_info); +int codec_set_av_threshold(codec_para_t *pcodec, int threshold);++int codec_get_freerun_mode(codec_para_t *pcodec);+int codec_set_freerun_mode(codec_para_t *pcodec, unsigned int mode);++int codec_init_audio_utils(codec_para_t *pcodec);+int codec_release_audio_utils(codec_para_t *pcodec);+int codec_set_audio_resample_ena(codec_para_t *pcodec, unsigned long mode);+int codec_get_audio_resample_ena(codec_para_t *pcodec);+int codec_set_audio_resample_type(codec_para_t *pcodec, unsigned long type);++int codec_set_video_delay_limited_ms(codec_para_t *pcodec,int delay_ms);+int codec_get_video_delay_limited_ms(codec_para_t *pcodec,int *delay_ms);+int codec_set_audio_delay_limited_ms(codec_para_t *pcodec,int delay_ms);+int codec_get_audio_delay_limited_ms(codec_para_t *pcodec,int *delay_ms);+int codec_get_audio_cur_delay_ms(codec_para_t *pcodec,int *delay_ms);+int codec_get_video_cur_delay_ms(codec_para_t *pcodec,int *delay_ms);+int codec_get_video_cur_bitrate(codec_para_t *pcodec,int *bitrate);+int codec_get_audio_cur_bitrate(codec_para_t *pcodec,int *bitrate);++int codec_set_vsync_upint(codec_para_t *pcodec, unsigned int mode);++int codec_get_last_checkout_apts(codec_para_t* pcodec, unsigned long *apts);+int codec_get_last_checkin_apts(codec_para_t* pcodec, unsigned long *apts);+ #endifdiff --git a/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec_type.h b/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec_type.hold mode 100644new mode 100755index 5d61ca8..2fa89f7--- a/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec_type.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec_type.h@@ -15,6 +15,7 @@ #include "amports/amstream.h" #include "amports/vformat.h" #include "amports/aformat.h"+#include "ppmgr/ppmgr.h"  typedef int CODEC_HANDLE; @@ -52,9 +53,22 @@ typedef struct {      } audio_info_t;  typedef struct {     +    int valid;               ///< audio extradata valid(1) or invalid(0), set by dsp+    int sample_rate;         ///< audio stream sample rate+    int channels;            ///< audio stream channels+    int bitrate;             ///< audio stream bit rate+    int codec_id;            ///< codec format id+    int block_align;         ///< audio block align from ffmpeg+    int extradata_size;      ///< extra data size+    char extradata[512];;   ///< extra data information for decoder+} Asf_audio_info_t;+++typedef struct {          CODEC_HANDLE handle;        ///< codec device handler     CODEC_HANDLE cntl_handle;   ///< video control device handler     CODEC_HANDLE sub_handle;    ///< subtile device handler+    CODEC_HANDLE audio_utils_handle;  ///< audio utils handler     stream_type_t stream_type;  ///< stream type(es, ps, rm, ts)     unsigned int has_video:1;   ///< stream has video(1) or not(0)     unsigned int has_audio:1;   ///< stream has audio(1) or not(0)@@ -75,6 +89,9 @@ typedef struct {          int packet_size;            ///< data size per packet     int avsync_threshold;       ///<for adec in ms>     void * adec_priv;           ///<for adec>+    int SessionID;+    int dspdec_not_supported;//check some profile that audiodsp decoder can not support,we switch to arm decoder+    int switch_audio_flag;//<switch audio flag switching(1) else(0) } codec_para_t;  typedef struct@@ -96,13 +113,20 @@ typedef struct {          int sample_rate;         ///< audio stream sample rate     int channels;            ///< audio stream channels     int format;              ///< codec format id+    int bitrate;+    int block_align;+    int codec_id;         //original codecid corespingding to ffmepg     int handle;              ///< codec device handler     int extradata_size;      ///< extra data size     char extradata[AUDIO_EXTRA_DATA_SIZE];+    int SessionID;+    int dspdec_not_supported;//check some profile that audiodsp decoder can not support,we switch to arm decoder+    int droppcm_flag;// drop pcm flag, if switch audio (1) } arm_audio_info;  //audio decoder type, default arc #define AUDIO_ARC_DECODER 0 #define AUDIO_ARM_DECODER 1 #define AUDIO_FFMPEG_DECODER 2+#define AUDIO_ARMWFD_DECODER  3 #endifdiff --git a/tools/depends/target/libamplayer/libamplayer/include/amplayer/message.h b/tools/depends/target/libamplayer/libamplayer/include/amplayer/message.hold mode 100644new mode 100755index 0ddedf1..e3984fd--- a/tools/depends/target/libamplayer/libamplayer/include/amplayer/message.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amplayer/message.h@@ -1,7 +1,7 @@ #ifndef PLAYER_MESSAGE_H #define PLAYER_MESSAGE_H -#define MESSAGE_MAX 4+#define MESSAGE_MAX 8  #define CTRL_CMD_RESPONSE   (0xffff) @@ -41,6 +41,7 @@ typedef enum {          CMD_SET_STEREO      = (1 << 14),        CMD_EN_AUTOBUF      = (1 << 15),     CMD_SET_AUTOBUF_LEV = (1 << 16),+    CMD_SET_FREERUN_MODE = (1 << 17),     CMD_MODE_MAX        = (1 << 31), } ctrl_mode_t; diff --git a/tools/depends/target/libamplayer/libamplayer/include/amplayer/player.h b/tools/depends/target/libamplayer/libamplayer/include/amplayer/player.hold mode 100644new mode 100755index b3eedc9..d18eb08--- a/tools/depends/target/libamplayer/libamplayer/include/amplayer/player.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amplayer/player.h@@ -6,7 +6,7 @@ #include  #include  #include -+#include   #ifdef  __cplusplus extern "C" {     @@ -52,7 +52,8 @@ int audio_right_mono(int pid); int audio_stereo(int pid); int audio_set_spectrum_switch(int pid,int isStart,int interval); int player_register_update_callback(callback_t *cb,update_state_fun_t up_fn,int interval_s);-char *player_status2str(player_status status);+char *player_status2str(player_status status);+char *player_value2str(char *key, int value); int player_cache_system_init(int enable,const char*dir,int max_size,int block_size);  //control interface@@ -71,6 +72,11 @@ int   enable_2XYscale(); int   enable_freescale_MBX(); int   disable_2X_2XYscale(); int   GL_2X_scale(int mSwitch);+int   wait_play_end();+int   wait_video_unreg();+int   clear_video_buf();+int64_t player_get_lpbufbuffedsize(int pid);+int64_t player_get_streambufbuffedsize(int pid);  #ifdef  __cplusplus }diff --git a/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_set_sys.h b/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_set_sys.hold mode 100644new mode 100755index c47dfd2..1f34afb--- a/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_set_sys.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_set_sys.h@@ -40,6 +40,7 @@ int set_black_policy(int blackout); int get_black_policy(); int get_karaok_flag(); int set_tsync_enable(int enable);+int get_tsync_enable(void); int set_tsync_discontinue(int enable); int get_pts_discontinue(); int set_fb0_blank(int blank);@@ -61,8 +62,6 @@ int set_fb1_scale_height(int height); int check_audiodsp_fatal_err(void); int set_stb_source_hiu(void); int set_stb_demux_source_hiu(void);-int get_stb_demux_source(char *strval, int size);-int get_stb_source(char *strval, int size);  int set_subtitle_enable(int num); int set_subtitle_curr(int num);@@ -72,6 +71,7 @@ int check_file_same(char *filename2); int set_amutils_enable(int isOn); int set_amutils_cmd(const char* cmd); int get_amutils_cmd(char* cmd);+int check_audio_output();  #ifdef  __cplusplus }diff --git a/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_thumbnail.h b/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_thumbnail.hold mode 100644new mode 100755index d1387e2..7054651--- a/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_thumbnail.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_thumbnail.h@@ -19,6 +19,7 @@ int thumbnail_get_key_data(void* handle, char* key, const void** data, int* data void thumbnail_get_video_rotation(void *handle, int* rotation); int thumbnail_decoder_close(void *handle); void thumbnail_res_free(void* handle);+int thumbnail_get_tracks_info(void *handle, int *vtracks,int *atracks,int *stracks);  #ifdef  __cplusplus }diff --git a/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_type.h b/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_type.hold mode 100644new mode 100755index 37ad847..b542096--- a/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_type.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amplayer/player_type.h@@ -5,14 +5,7 @@ #include   #define MSG_SIZE                    64-#if defined(HAS_AMLPLAYER_CHAPTERS)-#define MAX_CHAPTERS                64-#endif-#if defined(HAS_AMLPLAYER_VIDEO_STREAMS10) #define MAX_VIDEO_STREAMS           10-#else-#define MAX_VIDEO_STREAMS           8-#endif #define MAX_AUDIO_STREAMS           8 #define MAX_SUB_INTERNAL            8 #define MAX_SUB_EXTERNAL            24@@ -73,6 +66,28 @@ typedef enum     PLAYER_DIVX_RENTAL_VIEW =   0x40003, }player_status; +typedef enum {     +    DRM_LEVEL1     = 1,+    DRM_LEVEL2     = 2,+    DRM_LEVEL3     = 3,+    DRM_NONE       = 4, +} drm_level_t;++typedef struct drm_info {     +    drm_level_t drm_level;+int drm_flag;+int drm_hasesdata;+int drm_priv;+    unsigned int drm_pktsize;+unsigned int drm_pktpts;+unsigned int drm_phy;+unsigned int drm_vir;+unsigned int drm_remap;+int data_offset;+int extpad[8];+} drminfo_t;++  typedef struct {        @@ -120,9 +135,6 @@ typedef struct     aformat_t aformat;     int duration; audio_tag_info *audio_tag;    -#if defined(HAS_AMLPLAYER_AUDIO_LANG)-    char audio_language[4];-#endif }maudio_info_t;  typedef struct@@ -157,33 +169,15 @@ typedef struct     int cur_sub_index;     int seekable;     int drm_check;-#if defined(HAS_AMLPLAYER_VIDEO_STREAMS10)-    int t1;-    int t2;-#endif-#if defined(HAS_AMLPLAYER_CHAPTERS)-    int has_chapter;-    int total_chapter_num;-#endif+    int adif_file_flag; }mstream_info_t; -#if defined(HAS_AMLPLAYER_CHAPTERS)-typedef struct-{     -    char    *name;-    int64_t seekto_ms;-} mchapter_info_t;-#endif- typedef struct {      mstream_info_t stream_info; mvideo_info_t *video_info[MAX_VIDEO_STREAMS]; maudio_info_t *audio_info[MAX_AUDIO_STREAMS];     msub_info_t *sub_info[MAX_SUB_STREAMS];-#if defined(HAS_AMLPLAYER_CHAPTERS)-mchapter_info_t *chapter_info[MAX_CHAPTERS];-#endif }media_info_t;  typedef struct player_info@@ -210,6 +204,8 @@ typedef struct player_info int64_tbufed_pos; intbufed_time;/* Second*/     unsigned int drm_rental;+    int64_t download_speed; //download speed+    unsigned int last_pts; }player_info_t;  typedef struct pid_info@@ -231,7 +227,7 @@ typedef struct player_file_type #define STATE_PRE(sta) (sta>>16) #define PLAYER_THREAD_IS_INITING(sta)(STATE_PRE(sta)==0x1) #define PLAYER_THREAD_IS_RUNNING(sta)(STATE_PRE(sta)==0x2)-#define PLAYER_THREAD_IS_STOPPED(sta)(STATE_PRE(sta)==0x3)+#define PLAYER_THREAD_IS_STOPPED(sta)(sta==PLAYER_EXIT)  typedef int (*update_state_fun_t)(int pid,player_info_t *) ; typedef int (*notify_callback)(int pid,int msg,unsigned long ext1,unsigned long ext2);@@ -244,6 +240,9 @@ typedef enum PLAYER_EVENTS_FILE_TYPE,///*,ext2=0 PLAYER_EVENTS_HTTP_WV,        ///<(need use DRMExtractor),ext1=0, ext2=0 PLAYER_EVENTS_HWBUF_DATA_SIZE_CHANGED,///<(need use DRMExtractor),ext1=0, ext2=0+PLAYER_EVENTS_NOT_SUPPORT_SEEKABLE,     //not support seek;+PLAYER_EVENTS_VIDEO_SIZE_CHANGED,           ///,ext2 refers to video height+PLAYER_EVENTS_SUBTITLE_DATA,            // sub data ext1 refers to subtitledata struct }player_events;  typedef struct@@ -294,6 +293,9 @@ typedef struct int mode;//no use };   callback_t callback_fn;//callback function+callback_t subdata_fn;                  // subtitle data notify function+void *subhd;                            // sub handle+int subdatasource;                      // sub data source int byteiobufsize;//byteio buffer size used in ffmpeg int loopbufsize;//loop buffer size used in ffmpeg int enable_rw_on_pause;//no use@@ -310,6 +312,8 @@ typedef struct int buffing_starttime_s;//for rest buffing_middle,buffering seconds data to start. int buffing_force_delay_s; int lowbuffermode_flag;+       int lowbuffermode_limited_ms;+       int is_ts_soft_demux; int reserved [56];//reserved  for furthur used,some one add more ,can del reserved num int SessionID;  }play_control_t; diff --git a/tools/depends/target/libamplayer/libamplayer/include/amplayer/stream_format.h b/tools/depends/target/libamplayer/libamplayer/include/amplayer/stream_format.hold mode 100644new mode 100755index 5444f52..75292a8--- a/tools/depends/target/libamplayer/libamplayer/include/amplayer/stream_format.h+++ b/tools/depends/target/libamplayer/libamplayer/include/amplayer/stream_format.h@@ -36,8 +36,12 @@ typedef enum     P2P_FILE        = 16,     ASF_FILE        = 17,     STREAM_FILE     = 18,-    APE_FILE= 19,        -    FILE_MAX= 20,        +    APE_FILE= 19,  +    AMR_FILE        = 20,+    AVS_FILE= 21, +    PMP_FILE= 22, +    OGM_FILE            = 23,+    FILE_MAX= 24,         }pfile_type;  #endifdiff --git a/xbmc/android/activity/AndroidExtra.h b/xbmc/android/activity/AndroidExtra.hold mode 100644new mode 100755index 7b1c9ff..e641349--- a/xbmc/android/activity/AndroidExtra.h+++ b/xbmc/android/activity/AndroidExtra.h@@ -20,7 +20,7 @@  */    /*** Extra's not found in the Android NDK ***/-+/* // missing in early NDKs, is present in r9b+ extern float AMotionEvent_getAxisValue(const AInputEvent* motion_event, int32_t axis, size_t pointer_index); extern typeof(AMotionEvent_getAxisValue) *p_AMotionEvent_getAxisValue;@@ -71,3 +71,4 @@ extern typeof(AMotionEvent_getButtonState) *p_AMotionEvent_getButtonState; #define AMOTION_EVENT_AXIS_RTRIGGER 18 // mouse vertical wheel #define AMOTION_EVENT_AXIS_VSCROLL 0x09+*/diff --git a/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cppold mode 100644new mode 100755index 14ad038..82a99c0--- a/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp+++ b/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp@@ -204,7 +204,15 @@ CDVDVideoCodec* CDVDFactoryCodec::CreateVideoCodec(CDVDStreamInfo &hint, unsigne   // amcodec can handle dvd playback.   if (!hint.software && CSettings::Get().GetBool("videoplayer.useamcodec"))   {-     if ( (pCodec = OpenCodec(new CDVDVideoCodecAmlogic(), hint, options)) ) return pCodec;+    if(hint.codec != AV_CODEC_ID_RV10 && +        hint.codec != AV_CODEC_ID_RV20 &&+        hint.codec != AV_CODEC_ID_RV30 &&+        hint.codec != AV_CODEC_ID_RV40 ){/*not support es real stream.*/+            CLog::Log(LOGINFO, "Amlogic Video Decoder...");+            if ( (pCodec = OpenCodec(new CDVDVideoCodecAmlogic(), hint, options)) )+                return pCodec;+        }+        } #endif diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cppold mode 100644new mode 100755index b63904e..ec41cbe--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp@@ -1404,6 +1404,170 @@ int set_header_info(am_private_t *para)   return PLAYER_SUCCESS; } +typedef struct{+    const char *mode;+    int (*process)(CRect &rect);+}RectMode;++#define DEFAULT_AXIS_WIDTH  1920+#define DEFAULT_AXIS_HEIGHT 1080++static int rect_mode_480(CRect &rect)+{+    float w = rect.Width();+    float h = rect.Height();+    float xscale = (float)720 / (float)DEFAULT_AXIS_WIDTH;+    float yscale = (float)480 / (float)DEFAULT_AXIS_HEIGHT;++    rect.x1 *= xscale;+    rect.x2 *= xscale;+    rect.y1 *= yscale;+    rect.y2 *= yscale;++    return 0;+}++static int rect_mode_576(CRect &rect)+{+    float w = rect.Width();+    float h = rect.Height();+    float xscale = (float)720 / (float)DEFAULT_AXIS_WIDTH;+    float yscale = (float)576 / (float)DEFAULT_AXIS_HEIGHT;++    rect.x1 *= xscale;+    rect.x2 *= xscale;+    rect.y1 *= yscale;+    rect.y2 *= yscale;++    return 0;+}++static int rect_mode_720(CRect &rect)+{+    float w = rect.Width();+    float h = rect.Height();+    float xscale = (float)1280 / (float)DEFAULT_AXIS_WIDTH;+    float yscale = (float)720 / (float)DEFAULT_AXIS_HEIGHT;++    rect.x1 *= xscale;+    rect.x2 *= xscale;+    rect.y1 *= yscale;+    rect.y2 *= yscale;++    return 0;+}++static int rect_mode_1080(CRect &rect)+{+    return 0;+}++static int rect_mode_4K2K(CRect &rect)+{+    float w = rect.Width();+    float h = rect.Height();+    float xscale = (float)4000 / (float)DEFAULT_AXIS_WIDTH;+    float yscale = (float)2000 / (float)DEFAULT_AXIS_HEIGHT;++    rect.x1 *= xscale;+    rect.x2 *= xscale;+    rect.y1 *= yscale;+    rect.y2 *= yscale;+    return 0;+}++static int parse_resolution(char* in, int in_size, int *w, int *h)+{+    char *ptr = in;+    char resolution[2][16] = {0};+    int i = 0, j = 0;+    if(in == NULL || in_size <= 0){+        return -1;+    }++    while(ptr && i < 2 && j < 15){+        if(*ptr  >= '0' && *ptr <= '9'){+            resolution[i][j] = *ptr;+            j++;+        }+        else if(*ptr == 'x'){     +            i++;+            j = 0;+        }+        else{     +            break;+        }+        ptr++;+    }+    *w = atoi(&resolution[0][0]);+    *h = atoi(&resolution[1][0]);+    return 0;+}+++static int rect_mode_panel(CRect &rect)+{     +    float x1 = rect.x1,x2 = rect.x2,y1 = rect.y1,y2 = rect.y2;+    int angle = 0;+    +    rect.x1 = y1;+    rect.x2 = y2;+    rect.y1 = x1;+    rect.y2 = x2;++    char resolution[32] = {     0};+    int w = 0, h = 0;+    if(aml_get_sysfs_str("/sys/class/video/device_resolution", resolution, sizeof(resolution))){     +        CLog::Log(LOGERROR, "rect_mode_panel get mode failed");+        return -1;+    }+    if(parse_resolution(resolution, sizeof(resolution), &w, &h)){     +        CLog::Log(LOGERROR, "rect_mode_panel parse resolution failed");+        return -1;+    }+    std::string r = StringUtils::Format("%i,%i",+            (int)w, (int)h);+        CLog::Log(LOGDEBUG, "CAMLCodec::rect_mode_panel resolution<%s>", r.c_str()); +    if(w < h){     +        angle = 1;+    }+    +    aml_set_sysfs_int("/sys/class/ppmgr/angle", angle);+    CLog::Log(LOGDEBUG, "CAMLCodec::rect_mode_panel ");+    return 0;+}+++static const RectMode rect_mode[] = {     +    {     "480", rect_mode_480},+    {     "576", rect_mode_576},+    {     "720", rect_mode_720},+    {     "1080", rect_mode_1080},+    {     "4k2k", rect_mode_4K2K},    +    {     "panel", rect_mode_panel},+    {     NULL, NULL}+};++static int rect_process(CRect &rect)+{     +    char mode[64] = {     0};+    RectMode *p = (RectMode*)rect_mode;+    if(aml_get_sysfs_str("/sys/class/display/mode", mode, sizeof(mode))){     +        CLog::Log(LOGERROR, "rect_process failed");+        return -1;+    }+    CLog::Log(LOGDEBUG, "rect_process mode<%s>", mode);+    while(p->mode){     +        if(strstr(mode, p->mode) != NULL){     +            if(p->process){     +                return p->process(rect);+            }+        }+        p++;+    }+    return -1;+    +} /*************************************************************************/ CAMLCodec::CAMLCodec() : CThread("CAMLCodec") {     @@ -1512,6 +1676,11 @@ bool CAMLCodec::OpenDecoder(CDVDStreamInfo &hints)     am_private->video_rotation_degree = 3;   // handle extradata   am_private->video_format      = codecid_to_vformat(hints.codec);+  if(am_private->video_format == VFORMAT_H264){     +        if(hints.width > 1920 || hints.height > 1088){     +            am_private->video_format = VFORMAT_H264_4K2K;+        }+  }   switch (am_private->video_format)   {          default:@@ -1576,10 +1745,10 @@ bool CAMLCodec::OpenDecoder(CDVDStreamInfo &hints)       break;     case VFORMAT_REAL:       am_private->stream_type = AM_STREAM_RM;-      am_private->vcodec.noblock = 1;-      am_private->vcodec.stream_type = STREAM_TYPE_RM;-      am_private->vcodec.am_sysinfo.ratio = 0x100;-      am_private->vcodec.am_sysinfo.ratio64 = 0;+      am_private->gcodec.noblock = 1;+      am_private->gcodec.stream_type = STREAM_TYPE_RM;+      am_private->gcodec.ratio = 0x100;+      am_private->gcodec.ratio64 = 0;       {              static unsigned short tbl[9] = {     0};         if (VIDEO_DEC_FORMAT_REAL_8 == am_private->video_codec_type)@@ -2183,7 +2352,7 @@ void CAMLCodec::SetVideoRect(const CRect &SrcRect, const CRect &DestRect)   CLog::Log(LOGDEBUG, "CAMLCodec::SetVideoRect:m_stereo_mode(%d)", m_stereo_mode);   CLog::Log(LOGDEBUG, "CAMLCodec::SetVideoRect:m_stereo_view(%d)", m_stereo_view); #endif-+  rect_process(dst_rect);   if (m_stereo_mode == RENDER_STEREO_MODE_MONO)   {          std::string mode = GetStereoMode();

节点权限也要打开

chmod 666 /dev/amstream_*chmod 666 /dev/amvideochmod 666 /sys/class/video/axischmod 666 /sys/class/video/screen_modechmod 666 /sys/class/video/disable_videochmod 666 /sys/class/tsync/pts_pcrscr

xmbc下载地址:

git clone git://github.com/xbmc/xbmc.git 

更多相关文章

  1. android studio 复制项目
  2. android之ID
  3. 代码实现Layout android:layout_alignParentRight
  4. msm8916 lcd 相关调试点指导
  5. Android(安卓)MAC配置adb
  6. Android应用程序组件Content Provider的共享数据更新通知机制分
  7. xml的用法
  8. android待机应用和若干常见问题解决
  9. Android(安卓)性能优化之布局优化 (二)

随机推荐

  1. Android 动画标签——scale
  2. Android与JavaScript方法相互调用
  3. 修改 Android AVD 创建路径
  4. [APK破解]牛牛粤语学习机v1.6.4,积分1000,
  5. Android下的USB Host介绍和开发
  6. android中的坐标系以及获取坐标的方法
  7. 使用Android内部的DownloadProvider下载
  8. Android横向滑动加载更多的控件的实现---
  9. Android彻底组件化demo发布
  10. Android 关于android:name属性问题