原创 Android的MediaPlayer架構介紹

本文主要介紹的是Android中很重要也最爲複雜的媒體播放器(MediaPlayer)部分的架構。對於Android這樣一個完整又相對複雜的系統,一個MediaPlayer功能的實現不在其具體的功能,而是具體功能如何適應Android系統

原创 相見恨晚之gstreamer襯墊的激活

1.襯墊的激活         當一個bin(箱櫃)的狀態發生變化時,它裏面的元件的狀態是按照sink到source的順序變化的,即先設置sink元件的新狀態,再設置source元件的新狀態。當狀態變化是從ready變到pause時,元件

原创 Android重量級開發之--提高android啓動速度研究

大家都知道啓動速度慢是智能操作系統的一個通病,Android也不例外,啓動速度大概在1分鐘左右,雖然日本有一個叫quick boot的一秒啓動android的產品,但是畢竟是旁門左道。所以從常規來提高android的啓動速度成了大家研究的

原创 gstreamer 核心源碼source創建和識別typefind原理淺析(一) .

  一般情況下,用戶打開一個多媒體文件,gstreamer首先需要知道文件的類型,然後創建相應的解碼器來解析這個文件,最終實現播放這個文件。      一個實現流程實例如下:  (1)     app程序通知gstreamer會根據uri

原创 Gstreamer的音視頻同步 .

一 概述     Gstreamer的音頻視頻同步,概括起來是一個比較大的問題,因爲在網上可以看到很多音視頻同步的辦法。這裏我們只看最普通的一種。以音頻時鐘做爲參考時鐘(要求參考時鐘上的時間是線性遞增的);生成數據流時依據參考時鐘上的時間

原创 Android中深入研究Service .

關於Service,不管是Windows還是linux系統,相信大家應該遇到過很多自己解決不了的問題吧,那麼本文來講述一下Android手機系統中的

原创 深入淺出gstreamer的調度模式 .

gstreamer的官方文檔裏,調度的英文是schedule. 什麼是schedule? 它的英文解釋爲" to plan that something will happen at a particular time “.在gstrea

原创 stagefright簡介

1、    StageFright介紹      Android froyo版本多媒體引擎做了變動,新添加了stagefright框架,並且默認情況android選擇stagefright,並沒有完全拋棄 opencore,主要是做了一個

原创 Android開機啓動流程初探 .

第一步:啓動linux 1.Bootloader 2.Kernel 第二步android系統啓動:入口爲init.rc(system\core\ro

原创 android mediaplayer + stagefright 框架圖解

          在android原生的媒體播放器中是由mediaplayerservice來控制媒體播放器的,在mediaplayerservice中創建了mediaplayer,在mediaplayer.java的native方法

原创 Android中Media Framework淺析(一)——概述 .

剛剛開始研究Android中Media framwork,有必要做一下筆記和轉載一些高人輸出的成果。記錄下我的足跡,也留給大家分享。 由於我所有的開發是基於android 3.0 honeycomb版本,並且裏面有一些涉及到Googl

原创 Android中Media Framework淺析(二)——MediaServer

MediaServer是整個android中media部分的核心和靈魂。幾乎所有與多媒體播放相關的內容都放在這裏。包括了音視頻的編解碼以及顯示輸出。

原创 FFmpeg架構之I/O模塊分析 .

注意:這篇轉載的文章比較早,寫得很清晰,但是新版的ffmpeg的很多數據結構的名字已經改了。因此只能作參考。(例如ByteIOContext已經改名爲AVIOContext) 1概述 ffmpeg項目的數據IO部分主要是在liba

原创 __attribute__ 之weak,alias屬性

//strong.c #include <stdio.h> void symbol1() {     printf("%s.%s\n",__FILE__,__FUNCTION__); } //weak.c #include <stdio.

原创 Linux內核中內存相關的操作函數

1、kmalloc()/kfree()   static __always_inline void *kmalloc(size_t size, gfp_t flags)   內核空間申請指定大小的內存區域,返回內核空間虛擬地址。在函數實現