Friday, February 1, 2013

multimedia video architecture / framework




TMS320DM6437 DaVinci Technology One-Day Workshop


http://processors.wiki.ti.com/index.php/TMS320DM6437_DaVinci_Technology_One-Day_Workshop
http://software-dl.ti.com/trainingTTO/trainingTTO_public_sw/dm643x1day/DM643x1day%20COLOR.pdf
http://www.ti.com/tool/dspbios
http://www.kanecomputing.co.uk/pdfs/tmdsevm6446%20getting%20started%20guide.pdf


http://www.embedded-systems-portal.com/CTB/ALU__Arithmetic_Logic__Unit,10051.html


http://www.ti.com/lit/ug/sprueg8/sprueg8.pdf
http://www.ti.com/lsds/ti/tools-software/rtos.page
http://en.wikipedia.org/wiki/SYS/BIOS
http://www.eetimes.com/design/signal-processing-dsp/4017478/Real-Time-Operating-Systems-for-DSP-part-3


Android Multimedia Framework Overview
http://www.windriver.com.cn/mobile/pdf/08_Android_Multimedia_Framework_Overview.pdf
http://library.developer.nokia.com/index.jsp?topic=/GUID-E35887BB-7E58-438C-AA27-97B2CDE7E069/GUID-6E52C463-5489-591F-859D-68EAD5BA80FD.html

http://www.google.co.in/imgres?imgurl=http://www.freedesktop.org/wiki/GstOpenMAX%3Faction%3DAttachFile%26do%3Dget%26target%3Dgst-openmax.png&imgrefurl=http://kcchao.wikidot.com/multimedia-framework&h=502&w=801&sz=103&tbnid=KPYkFCNyCJ0mDM:&tbnh=79&tbnw=126&prev=/search%3Fq%3Dmultimedia%2Bframework%26tbm%3Disch%26tbo%3Du&zoom=1&q=multimedia+framework&usg=__QN2OYUrrr8Kp9Qnmk0Fj57m7wmg=&docid=XObn-J1_Qx9kfM&hl=en&sa=X&ei=CwoJUcOKM8TMswam34CADg&sqi=2&ved=0CDoQ9QEwAw

http://www.arm.com/community/partners/product_images/4725.jpg
http://meegoworld.blogspot.in/2010/12/gist-on-multimedia-framework-in-meego.html





video processing Arc
http://www.arm.com/community/partners/product_images/3092.jpg

http://www.arm.com/community/partners/display_product/rw/ProductId/3099/

http://www.iwavesystems.com/direct-show-multimedia-on-i-mx6





http://www.ti.com/lit/ug/sprue66e/sprue66e.pdf
http://www.ti.com/lit/ds/symlink/tms320dm6437.pdf










An operating system abstraction layer (OSAL) provides an application programming interface (API) to an abstract operating system making it easier and quicker to develop code for multiple software or hardware platforms.












http://www.adeneo-embedded.com/Services/BSP-and-Driver-Development
http://en.wikipedia.org/wiki/Operating_system_abstraction_layer
http://en.wikipedia.org/wiki/Board_support_package
http://www.ti.com/tool/dspbios
http://www.qnx.com/developers/docs/6.3.2/photon/multimedia2/overview.html


DSP/BIOS™ kernel is a scalable real-time multi-tasking kernel, designed specifically for the TMS320C6000™, TMS320C55x™, and TMS320C28x™ DSP platforms. Together with its associated networking, microprocessor-DSP communications, and driver modules, DSP/BIOS kernel provides a solid foundation for even the most sophisticated DSP applications. DSP/BIOS kernel has been proven in thousands of customer designs and is one of the world’s mostly widely used real-time operating systems. DSP/BIOS kernel requires no runtime license fees and is backed by Texas Instruments worldwide training and support organizations.


DSP/BIOS Multithreading
To provide the fast response required by DSP applications, DSP/BIOS kernel augments the traditional tasking model with additional threading mechanisms. Software Interrupts are lightweight pre-emptible threads that share a common stack. This results in lower memory overhead and faster context switch times, as there is no need to save and restore a task stack. Periodic Functions are time-triggered high-priority threads that can be easily set up to process samples of data arriving at fixed time intervals, simplifying the design of multirate systems.
DSP/BIOS IPC Mechanisms
DSP/BIOS kernel offers several IPC mechanisms for interthread communication. Semaphores and Locks provide basic synchronization and resource locking. Mailboxes enable synchronous transfer of fixed sized messages between tasks. Message queues enable zero copy, variable-length message passing between any DSP/BIOS kernel thread type. The exact memory for each message is allocated when the message needs to be sent. Message passing is transparent at the application level and can be within a single DSP or between multiple DSPs. For inter-DSP communication, a Message Queue Transport is required. Some of these (for example, Serial RapidIO®) are available pre-tested from TI.
DSP/BIOS Multicore Support
DSP/BIOS kernel fully supports TI’s multicore DSP solutions. For devices designed to execute the same image on multiple cores, DSP/BIOS kernel provides shared image support, maximizing the amount of local core memory available for data. In addition, a shared memory transport is provided to enable core-to-core communication using the DSP/BIOS MSGQ module. This transport utilizes the underlying hardware features such as atomic access monitors or hardware semaphores to provide the most efficient implementation.
DSP/BIOS Interrupt Management
DSP/BIOS kernel includes a comprehensive set of services for interrupt management. The interrupt dispatcher enables developers to write ISRs in C by performing low-level operations such as context save/restore and temporary disabling of the scheduler. This approach reduces code size by eliminating the need to specifically add such code to each ISR. To reduce data memory requirements, all ISRs use a common stack rather than the stack of the task they interrupt, with the exception of the first interrupt context, which is stored on the task stack for performance reasons. The HWI and Event Combiner modules provide additional APIs for enabling/disabling interrupts and multiplexing multiple interrupt sources on to a single pin.
DSP/BIOS Power Management
For TI DSPs used in portable applications where power consumption is a key consideration, such as the TMS320C5509 DSP, DSP/BIOS kernel offers a range of power management features. These may include automatically idling the CPU when in the IDL task, voltage and frequency scaling APIs, sleep or hibernate APIs, automated idling of peripherals when the peripheral domain is not in use, and a register/notify mechanism for coordinating complex system-wide power management.
DSP/BIOS OS-Aware Analysis & Debug
In conjunction with Code Composer Studio™ IDE, DSP/BIOS kernel provides several tools to aid debugging and optimization of multithreaded applications. The Kernel Object Viewer enables a developer to check the status of OS objects such as tasks, mailboxes, and semaphores, including whether a task is ready, running, or blocked, and which tasks are blocked on an IPC. The Real-Time Analysis tools display the thread execution and switching sequence, average and maximum execution times for a thread, and system CPU load, as well as providing a very low overhead printf capability.

DSP/BIOS Link

Many DSP-based applications, ranging from digital cameras to communications switches, use a microprocessor (GPP) to control one or more DSPs. To meet this need, TI is increasingly delivering devices that offer an ARM® and DSP core in the same package. DSP/BIOS Link is software designed to facilitate communication between the ARM and the DSP in SoC devices.
To develop applications that reside on GPP+DSP solutions, developers must implement communications software that enables data and control information to be exchanged between the GPP and the DSP. In addition, the GPP must also boot the DSP and often control which algorithms the DSP executes for a specific task. DSP/BIOS Link eliminates the need to create these functions from scratch by providing a robust set of MCU-DSP communications services including:
  • Variable-length messaging between the GPP and DSP
  • Ring buffer communication between GPP and DSP
  • Point-to-point, asynchronous data streaming between the GPP and DSP
  • Bootload the DSP from GPP
  • Pre-tested GPP-DSP communications driver support for select devices
DSP/BIOS Link is available for both SoC devices, such as DaVinci™, where the ARM and DSP communicate using shared memory, and discrete DSPs offering a PCI interface. DSP/BIOS Link is provided as a source code porting kit and includes pre-tested ports for some versions of embedded Linux.



Multimedia Framework Overview


PDF Documents
More resources

Multimedia Framework Overview

This chapter provides an overview of the Multimedia Framework, and covers:

Multimedia architecture

The Multimedia library architecture is modular, meaning that it consists of units that can be interchanged with each other to provide only the functionality you need. In addition, because it uses the Addon Interfaces library to define its standard interfaces, you can write new components (such as codecs), and easily incorporate new components written by QNX or third parties as they become available, in some cases without having to recompile your application.
A filter is the basic building block of the Multimedia framework. Multimedia Filters:
  • are compiled as DLLs or libraries. The DLL versions of the filters are located by default in lib/dll/mmedia (on the target). The library versions are used at compile-time if your application is linking against them statically.
  • perform a specific task on multimedia data, such as reading a file from disk, parsing, decoding, or writing data to an audio device
  • are plugins, and therefore implement a standard interface that the Multimedia library understands. The interfaces are defined in the Addon Interface library, aoi.
To process a multimedia file, your application uses only the filters it needs to get the multimedia data, process it, and send it to a target device. We classify filters based on their specific task. A filter can be a:
Reader
Reads data from a source. Examples are audio card readers, data stream readers, and video capture card readers.
Parser
Parses a stream of data into component parts. Examples are MPEG bitstream parsers, WAV format parsers, and AVI format parsers.
Decoder
Decodes compressed or encoded data. Examples are mpeg audio & video decoders, and divx decoders.
Encoder
Encodes raw data into a specific format. Examples are mpeg audio & video encoders.
Writer
Sends data to a destination. Examples are audio card writers, video output writers, and output file writers.
A filter is a generic object. Its functionality is determined by the way it processes data, and the interfaces it implements. A Multimedia library interface defines the set of methods that the library expects filters of a specific type to have. For example, all filters must implement the create and destroy methods defined in the AODeConstructor interface so that the library can create and destroy them, while only filters that read data from a source need to implement the MediaReader interface. The implementation of an interface is declared as a structure of pointers to implemented functions in a defined order.
Each filter can have multiple input and output channels, so if you have a file format that's interleaved with more than one data stream, you can have as many output data channels as the input data stream contains. This is how the MPEG System parser works, for example -- it parses MPEG System data into two streams, video and sound. An MPEG System encoder filter works the opposite way; it has separate input channels for sound and video, and one output channel.
We already provide a number of filters written for the Multimedia framework, but if you need a new one, you have to write only the decoder, parser, or other filter that hasn't already been written. Because the multimedia architecture uses a "plugin" framework, each filter component can easily be integrated (plugged in) with existing filters.
To use the Multimedia library, your application sets up a graph, an abstract object that encapsulates the multimedia filters needed to process a multimedia stream. A graph is stored as a MmGraph_t structure. It's built and destroyed at run time by the player application, and is specific to a particular media stream. Your application adds to the graph all the filters required to process multimedia data from source to destination.
If you know the specific filter required to process the multimedia stream, you can add it to the graph by name. However, a more flexible approach is to use functions that query the library and find the best filter for the data. In this way your application can handle any media type that the library's filters can handle, and use any new filters added to the library without being recompiled.
In the example below, six filters are used to read, parse, decode, and present an MPEG media stream. Each filter has an input channel and at least one output channel, except for special purpose "media reader" and "media writer" filters, which are at the beginning and end of the filter chain.

Multimedia graph example

Multimedia graph example.
In the filters we provide, multimedia streams are synchronized by the audio stream, if present. In the MPEG example above, the writer filters don't communicate directly. Instead, they use the audio writer filter MediaClock interface to the Multimedia library (all filters have hooks to the library) to determine the correct media time. In this way, the video writer continuously checks its media time against the audio writer, and synchronizes its playback accordingly.




A multimedia framework is a software framework that handles media on a computer and through a network. A good multimedia framework offers an intuitive API and a modular architecture to easily add support for new audio, video and container formats and transmission protocols. It is meant to be used by applications such as media players and audio or video editors, but can also be used to build videoconferencing applications, media converters and other multimedia tools.
In contrast to function libraries, a multimedia framework provides a run time environment for the media processing. Ideally such an environment provides execution contexts for the media processing blocks separated from the application using the framework. The separation supports the independent processing of multimedia data in a timely manner. These separate contexts can be implemented as threads.

http://www.qnx.com/developers/docs/6.3.2/photon/multimedia2/overview.html   

1 comment:

  1. Mainly functions are remove suspended or colloidal impurity, especially effectively remove small particle and bacterium, also remove BODs and COD in certain level.

    ReplyDelete