ハイエンド・オーディオ機能を手軽に実現する ソフトウェア ... - Synopsys
ハイエンド・オーディオ機能を手軽に実現する ソフトウェア ... - Synopsys
ハイエンド・オーディオ機能を手軽に実現する ソフトウェア ... - Synopsys
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
White Paper<br />
<br />
<br />
SoC<br />
20123<br />
Author<br />
Ruud Derwig<br />
Senior Staff,<br />
<strong>Synopsys</strong>, Inc.<br />
<br />
CPU<br />
Blu-ray<br />
24/192kHz HDHigh-Definition<br />
9.1Pro Logic IIz<br />
DesignWare ARC AS211SFX/<br />
AS221BD 1 DSPDigital<br />
Signal ProcessorCPU<br />
<br />
<br />
Linux<br />
Android<br />
/<br />
<br />
<br />
1<br />
<br />
<br />
<br />
DSP<br />
DSP<br />
1<br />
<br />
CPUDSP
2<br />
SMP<br />
<br />
<br />
DSPDSP<br />
DSPCPU<br />
<br />
SMP<br />
<br />
<br />
CPU<br />
<br />
<br />
1<br />
2<br />
DSP<br />
<br />
<br />
<br />
<br />
<br />
<br />
+<br />
<br />
<br />
<br />
<br />
+<br />
<br />
OS<br />
<br />
<br />
<br />
ARC AS211SFX<br />
AS221BD<br />
<br />
<br />
<br />
2DSP<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
DSP<br />
Khronos OpenMAX-IL 2<br />
<br />
API<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
CPU<br />
DSP<br />
<br />
<br />
ARC AS211SFX/AS221BD<br />
1DSP<br />
API
OpenMAX<br />
LinuxGStreamer3<br />
Android<br />
Google/Open Handset AllianceStagefright<br />
43<br />
DSP<br />
ARC AS211SFX/AS211BD<br />
SoC<br />
<br />
<br />
<br />
1DSPCPUAPIApplication<br />
Programming Interface<br />
1APIAPI<br />
APICPUDSP<br />
DSP<br />
API<br />
DSP<br />
API 2 API <br />
<br />
API<br />
API<br />
CPU DSP<br />
API APIAPI<br />
API<br />
MP3<br />
API<br />
<br />
<br />
API 1<br />
<br />
DSP DSP <br />
DSPDSP <br />
DSP <br />
<br />
<br />
3<br />
DSP<br />
DSP<br />
3
MSF<br />
<br />
RPC/<br />
IPC<br />
<br />
RPC/<br />
IPC<br />
MSF<br />
<br />
MQX OS<br />
<br />
ARC AS211SFX/AS221BD<br />
3<br />
DSP<br />
DSP3<br />
<br />
OSDesignWare SoundWave 5<br />
ARC MQX<br />
MSF<br />
/<br />
API<br />
<br />
End-of-Stream<br />
DesignWare SoundWaveARC<br />
ARC MSFMSF<br />
<br />
API<br />
4MP3<br />
<br />
MP3<br />
<br />
// Step #1 – creating modules<br />
msf_api_source_module_create(“Source”, … ,&source_module_id);<br />
msf_api_audio_api_module_create(“MP3 Decoder”, … , &audio_api_module_id);<br />
msf_api_sink_module_create(“Sink”, … , &sink_module_id);<br />
// Step #2 – connecting modules<br />
msf_api_connect_pins(source_module_id, audio_api_module_id, …);<br />
msf_api_connect_pins(audio_api_module_id, sink_module_id, …);<br />
// Step #3 – starting data processing by sending START_PLAYBACK message<br />
msf_api_message_send_to_module(source_module_id,<br />
MSF_MESSAGE_CONTROL_CMD_START_PLAYBACK, …);<br />
4MSF<br />
4
RPC/IPCIPC<br />
API <br />
<br />
IPC<br />
<br />
<br />
IPC<br />
RPCIPC IPC<br />
<br />
CC++ <br />
RPC<br />
<br />
1<br />
<br />
DesignWare SoundWave <br />
RPC<br />
<br />
<br />
1<br />
<br />
CPUDSPC<br />
<br />
<br />
DSPDSP<br />
DSPintrinsic<br />
DSP<br />
DSP<br />
<br />
<br />
DSP<br />
<br />
3<br />
<br />
GUI<br />
///<br />
<br />
<br />
SD<br />
<br />
/<br />
<br />
<br />
DACRaw<br />
HDMII/O<br />
3Linux<br />
WindowsiOS<br />
5
MSFDSPRPC/IPCRPC/IPC<br />
MSFDSP<br />
MSFDSP<br />
<br />
MSF<br />
<br />
3<br />
DSP<br />
<br />
API<br />
<br />
GStreamerStagefrightOpenMAX-IL3<br />
<br />
GStreamer<br />
GStreamer<br />
LGPLv2<br />
<br />
GStreamer<br />
GStreamer<br />
<br />
<br />
<br />
GStreamer<br />
<br />
gst-launch playbin uri=file:<br />
<br />
GStreamer<br />
<br />
gst-inspect<br />
gst-launch<br />
gst-editor<br />
<br />
<br />
VoIP<br />
<br />
<br />
<br />
<br />
<br />
(...)<br />
GStreamer<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
- file:<br />
- http:<br />
- rtsp:<br />
- ...<br />
<br />
- alsa<br />
- v4l2<br />
- tcp/upd<br />
- ...<br />
<br />
- avi<br />
- mp4<br />
- ogg<br />
- ...<br />
<br />
- mp3<br />
- mpeg4<br />
- vorbis<br />
- ...<br />
<br />
- converters<br />
- mixers<br />
- effects<br />
- ...<br />
<br />
- alsa<br />
- xvideo<br />
- tcp/udp<br />
- ...<br />
(...)<br />
GStreamer<br />
GStreamer150<br />
<br />
<br />
5GStreamer<br />
6
Stagefright<br />
Stagefright Android 6 Android <br />
<br />
Android <br />
Java <br />
Android<br />
<br />
Stagefright<br />
<br />
GStreamer<br />
SoC GStreamer Android 6GStreamer<br />
7<br />
JAVA<br />
<br />
<br />
<br />
<br />
<br />
Linux<br />
...<br />
<br />
<br />
<br />
Stagefright<br />
<br />
GStreamer<br />
<br />
AudioFlinger<br />
OpenCore<br />
<br />
MIDI<br />
<br />
Vorbis<br />
<br />
<br />
<br />
Linux<br />
Alsa<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
->SurfaceFlinger<br />
<br />
<br />
<br />
->AudioFlinger<br />
6Android<br />
Stagefright AndroidApache 2.0<br />
OpenCoreGoogleAndroid<br />
Blu-<br />
Ray HDStagefright<br />
GStreamer Stagefright<br />
<br />
Audioflinger<br />
<br />
Stagefright<br />
<br />
StagefrightAPI<br />
OpenMAX-IL<br />
7
OpenMAX-IL<br />
3OpenMAX-IL<br />
APIKhronos<br />
KhronosOpenGL<br />
OpenMAX-ILIntegration Layer<br />
3API2<br />
OpenMAX-ALApplication LayerDCT<br />
OpenMAX-DLDevelopment Layer<br />
<br />
7OpenMAX-IL<br />
OpenMAX-ILGStreamer<br />
OpenMAX-<br />
IL /MP3<br />
<br />
IL<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
OpenMAX<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
IPC<br />
<br />
<br />
<br />
IPC<br />
<br />
7: OpenMAX-IL<br />
OpenMAX-IL<br />
<br />
CPU<br />
3<br />
<br />
<br />
<br />
72<br />
1OpenMAX-IL<br />
1<br />
<br />
<br />
8
1<br />
DSP<br />
2GStreamerStagefrightOpenMAX-IL<br />
OpenMAX<br />
SoC<br />
GStreamer OpenMAXGStreamer<br />
30%<br />
OpenMAX<br />
Stagefright OpenMAX<br />
DSP<br />
<br />
API<br />
GStreamer Stagefright OpenMAX-IL<br />
<br />
OMX<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
1 <br />
DSP<br />
3<br />
OpenMAX-IL<br />
<br />
<br />
GStreamerOpenMAX<br />
Stagefright<br />
AudioFlingerGStreamerOpenMAX<br />
<br />
SoC <br />
DSPSoC<br />
<br />
CPU<br />
/<br />
1DSPARC AS211SFX/AS221BD<br />
I/ODSP<br />
82DSP<br />
<br />
<br />
<br />
DSP 8<br />
G<br />
RPC/IPC <br />
DSP 8M<br />
9
DSP MSFDSP <br />
<br />
<br />
<br />
<br />
<br />
G<br />
CPU<br />
G<br />
G<br />
G<br />
FIFO<br />
-ARC<br />
<br />
<br />
M M M<br />
<br />
FIFO<br />
ARC-ARC<br />
<br />
ARC#0<br />
ARC#1<br />
ARC AS221BD<br />
<br />
<br />
8SoC<br />
<br />
GStreamerStagefrightOpenMAX-IL<br />
OpenMAX-IL<br />
<br />
RPC/IPCDSP MSFDSP<br />
GStreamer<br />
MSF<br />
OpenMAX-ILMSF<br />
Android<br />
<br />
StagefrightOpenMAX-IL<br />
<br />
/HD/<br />
StagefrightAndroid GStreamer<br />
Google TV<br />
<br />
10
connect_msf_outpin (GstPad* pad)<br />
{<br />
GstAudioModule *filter = …; // this elements private data<br />
if (!pad_is_deeptunnel(pad))<br />
{<br />
/* create sink module for connection to CPU->DSP fifo */<br />
msf_api_sink_module_create(filter->msf_coreid, "Sink module",<br />
filter->output_fifo_buffer, ... , &sink_module_id);<br />
msf_api_connect_pins(filter->msf_moduleid, sink_module_id, ...);<br />
} else if (pad_is_corecrossing(pad))<br />
{<br />
/* create sink module for connection to DSP->DSP fifo */<br />
msf_api_sink_module_create(filter->msf_coreid, "Sink module",<br />
filter->msf_sharedfifo, ... , &sink_module_id);<br />
msf_api_connect_pins(filter->msf_moduleid, sink_module_id, ...);<br />
} else<br />
{<br />
/* deep-tunnel AND no core-crossing */<br />
/* get the module id of the peer MSF module */<br />
g_object_get(G_OBJECT(peerelement),"msf_moduleid",<br />
&peer_module_id,…);<br />
msf_api_connect_pins(filter->msf_moduleid, peer_module_id, ...);<br />
}<br />
}<br />
9GStreamer<br />
9DSPAPI<br />
APIDesignWare SoundWave<br />
GStreamer<br />
2GStreamer<br />
<br />
<br />
GStreamer<br />
CPUDSP<br />
<br />
<br />
<br />
<br />
ARC AS211SFX/AS221BD<br />
DSP<br />
<br />
OS<br />
IPCAPI<br />
<br />
SoC<br />
<br />
11
1 Wolf, P., van der (2012). Audio Subsystems for Efficient SoC Integration; Integrating High-Definition<br />
Multi-Channel Audio Solutions at the Speed of Sound. White Paper, <strong>Synopsys</strong>, Inc.<br />
2 The Khronos group (2008). OpenMAX Integration Layer Application Programming Interface<br />
Specification. http://www.khronos.org/registry/omxil/specs/OpenMAX_IL_1_1_2_Specification.pdf<br />
3 GStreamer<br />
http://gstreamer.freedesktop.org<br />
4 StagefrightAndroid<br />
http://developer.android.com<br />
5 DesignWare SoundWaveIP<br />
http://www.synopsys.com/dw/ipdir.php?ds=audio_subsystem<br />
6 Gaignard, B. (2010). Android and GStreamer. Conference presentation, Embedded Linux Conference<br />
Europe, October 2010, Cambridge.<br />
http://elinux.org/images/a/a4/Android_and_Gstreamer.ppt, ST-Ericson.<br />
7 GStreamer Android<br />
http://gstreamer.freedesktop.org/wiki/GstreamerAndroid_InstallInstructions.<br />
<br />
158-0094<br />
531-0072<br />
2211<br />
319313<br />
TEL.03-6746-3500 FAX.03-6746-3535<br />
TEL.06-6359-8139FAX.06-6359-8149<br />
© <strong>Synopsys</strong>, Inc. All rights reserved.<strong>Synopsys</strong><strong>Synopsys</strong>, Inc.<br />
http://www.synopsys.com/Company/Pages/Trademarks.aspx <br />
03/12.AP.CS1444.