Tuesday, July 29, 2008

Application Crashing Problem in Release version in VC++ with Map File

Application Crashing Problem in Release version in VC++:
-------------------------------------------------------------------------


Crash is as follows:

Data Abort: Thread=8dac8ba4 Proc=8037c870 'TestApp.exe'
AKY=ffffffff PC=78a3e118(image_proc.dll+0x0001e118) RA=00013178(StreamingPlayer.exe+0x00003178) BVA=241dc35e FSR=00000807

Data Abort: Thread=8d89dc34 Proc=8037c870 'TestApp.exe'

AKY=ffffffff PC=78a3e118(image_proc.dll+0x0001e118) RA=00013178(StreamingPlayer.exe+0x00003178) BVA=241dc35e FSR=00000807

Unhandled exception at 0x78a3e118 in TestApp.exe: 0xC0000005: Access violation writing location 0x001dc35e.

Data Abort: Thread=8d739000 Proc=8037c960 'wmplayer.exe'

AKY=ffffffff PC=7894e118(imageLib.dll+0x0001e118) RA=00013178(wmplayer.exe+0x00003178) BVA=260ec35e FSR=00000807








if we are building our application in release version, at client side it crashed with some address;
How can we trace which function is failed and locate where the error is ?


1.Solution for the above thing is to make use of .map file


.map file content sample:
---------------------------
imageLib
Timestamp is 488496e7 (Mon Jul 21 19:32:15 2008)
Preferred load address is 10000000


Start Length Name Class
0001:00000000 000004bcH gTest CODE
0002:00000000 00000e30H Addition CODE

Address Publics by Value Rva+Base Lib:Object

0000:00000000 ___safe_se_handler_table 00000000
0000:00000000 ___safe_se_handler_count 00000000
0001:00000000 RGB565toYUV420 10001000 ColorConversion.obj
0002:00000000 UYVYtoRGB565 10002000 ColorConversion.obj
0002:000003d4 Rotate 100023d4 ImageOps.obj
0002:00000660 Blur 10002660 ImageOps.obj


Static symbols

0010:0000417c Init 1001517c f InitOps.obj






Crash will throw some address which caused the problem;




There are two types of crash;Crash may be in executables or may be in DLLs;



Solution for Crash in Executable Application:
------------------------------------------

Example:
---------
AKY=ffffffff PC=7894e118(TestApp.exe 0x1001e118) Data abort

if it is executables, the Solution is as follows:


0x1001e118 - is a Crash Address;


Function Address = Crash Address - Preferred Load Address in Map file - 0x1000 ( For Portable Executable File Format Infos) ;


Solution for Crash in DLL:
-----------------------------


AKY=ffffffff PC=7894e118(imageLib.dll+0x0002478) RA=00013178(wmplayer.exe+0x00003178)


ImageLib.dll + 0x0001e118 means

Crash Address = Preferred Load address in Map File + Crash Address;
= 10000000 + 2478
= 10002478 This Crash Address is in between Rotate and Blur Function;
So the crash is in Rotate function;





Preferred load address is 10000000
0002:000003d4 Rotate 100023d4 ImageOps.obj
0002:00000660 Blur 10002660 ImageOps.obj


Note:
--------
100023d4 - Starting Address of the Rotate() fn
( Rotate fn code occupies memory range from 100023d4 to 1000265F )
10002660 - Starting Address of the Blur() fn



Creation of a Map File in Vs2005:
--------------------------------------------------

At the time of building the project, if we specified this macro

/MAP[:file name] will leads to create the map file ;




/MAP (Generate Mapfile)


/MAP[:filename]
Remarks
where:

filename
A user-specified name for the mapfile. It replaces the default name.

Remarks
The /MAP option tells the linker to create a mapfile.

By default, the linker names the mapfile with the base name of the program and the extension .map. The optional filename allows you to override the default name for a mapfile.

A mapfile is a text file that contains the following information about the program being linked:

The module name, which is the base name of the file

The timestamp from the program file header (not from the file system)

A list of groups in the program, with each group's start address (as section:offset), length, group name, and class

A list of public symbols, with each address (as section:offset), symbol name, flat address, and .obj file where the symbol is defined

The entry point (as section:offset)

The /MAPINFO option specifies additional information to be included in the mapfile.

To set this linker option in the Visual Studio development environment
Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.

Click the Linker folder.

Click the Debug property page.

Modify the Generate Map File property


For More Info:
http://www.codeproject.com/KB/debug/mapfile.aspx

Labels:

Application Crashing Problem in Release version in VC++ with Map File

Application Crashing Problem in Release version in VC++:
-------------------------------------------------------------------------


Crash is as follows:

Data Abort: Thread=8dac8ba4 Proc=8037c870 'TestApp.exe'
AKY=ffffffff PC=78a3e118(image_proc.dll+0x0001e118) RA=00013178(StreamingPlayer.exe+0x00003178) BVA=241dc35e FSR=00000807

Data Abort: Thread=8d89dc34 Proc=8037c870 'TestApp.exe'

AKY=ffffffff PC=78a3e118(image_proc.dll+0x0001e118) RA=00013178(StreamingPlayer.exe+0x00003178) BVA=241dc35e FSR=00000807

Unhandled exception at 0x78a3e118 in TestApp.exe: 0xC0000005: Access violation writing location 0x001dc35e.

Data Abort: Thread=8d739000 Proc=8037c960 'wmplayer.exe'

AKY=ffffffff PC=7894e118(imageLib.dll+0x0001e118) RA=00013178(wmplayer.exe+0x00003178) BVA=260ec35e FSR=00000807








if we are building our application in release version, at client side it crashed with some address;
How can we trace which function is failed and locate where the error is ?


1.Solution for the above thing is to make use of .map file


.map file content sample:
---------------------------
imageLib
Timestamp is 488496e7 (Mon Jul 21 19:32:15 2008)
Preferred load address is 10000000


Start Length Name Class
0001:00000000 000004bcH gTest CODE
0002:00000000 00000e30H Addition CODE

Address Publics by Value Rva+Base Lib:Object

0000:00000000 ___safe_se_handler_table 00000000
0000:00000000 ___safe_se_handler_count 00000000
0001:00000000 RGB565toYUV420 10001000 ColorConversion.obj
0002:00000000 UYVYtoRGB565 10002000 ColorConversion.obj
0002:000003d4 Rotate 100023d4 ImageOps.obj
0002:00000660 Blur 10002660 ImageOps.obj


Static symbols

0010:0000417c Init 1001517c f InitOps.obj






Crash will throw some address which caused the problem;




There are two types of crash;Crash may be in executables or may be in DLLs;



Solution for Crash in Executable Application:
------------------------------------------

Example:
---------
AKY=ffffffff PC=7894e118(TestApp.exe 0x1001e118) Data abort

if it is executables, the Solution is as follows:


0x1001e118 - is a Crash Address;


Function Address = Crash Address - Preferred Load Address in Map file - 0x1000 ( For Portable Executable File Format Infos) ;


Solution for Crash in DLL:
-----------------------------


AKY=ffffffff PC=7894e118(imageLib.dll+0x0002478) RA=00013178(wmplayer.exe+0x00003178)


ImageLib.dll + 0x0001e118 means

Crash Address = Preferred Load address in Map File + Crash Address;
= 10000000 + 2478
= 10002478 This Crash Address is in between Rotate and Blur Function;
So the crash is in Rotate function;





Preferred load address is 10000000
0002:000003d4 Rotate 100023d4 ImageOps.obj
0002:00000660 Blur 10002660 ImageOps.obj


Note:
--------
100023d4 - Starting Address of the Rotate() fn
( Rotate fn code occupies memory range from 100023d4 to 1000265F )
10002660 - Starting Address of the Blur() fn



Creation of a Map File in Vs2005:
--------------------------------------------------

At the time of building the project, if we specified this macro

/MAP[:file name] will leads to create the map file ;




/MAP (Generate Mapfile)


/MAP[:filename]
Remarks
where:

filename
A user-specified name for the mapfile. It replaces the default name.

Remarks
The /MAP option tells the linker to create a mapfile.

By default, the linker names the mapfile with the base name of the program and the extension .map. The optional filename allows you to override the default name for a mapfile.

A mapfile is a text file that contains the following information about the program being linked:

The module name, which is the base name of the file

The timestamp from the program file header (not from the file system)

A list of groups in the program, with each group's start address (as section:offset), length, group name, and class

A list of public symbols, with each address (as section:offset), symbol name, flat address, and .obj file where the symbol is defined

The entry point (as section:offset)

The /MAPINFO option specifies additional information to be included in the mapfile.

To set this linker option in the Visual Studio development environment
Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.

Click the Linker folder.

Click the Debug property page.

Modify the Generate Map File property

Labels:

Friday, July 25, 2008

Streaming Versus Progressive Download

Streaming Versus Progressive Download :
-------------------------------------------------
There are trade-offs to consider when deciding whether to deliver a movie using progressive download, streaming, or broadcasting.
All QuickTime media types can be delivered as progressive downloads. Streaming is limited to sound, video, and text. Broadcasting is further limited to compression schemes and quality settings compatible with real-time capture and compression.
Progressive download works even when the bandwidth is not sufficient for real-time playback; it simply buffers incoming data and delivers delayed playback. Streaming and broadcasting are bandwidth limited; if the connection is not fast enough, the movie cannot play.
Streaming movies do not store a copy of the movie on the client computer, making them inherently more difficult to copy without the consent of the movie’s owner. This can be an important consideration, and is one reason why people choose streaming over progressive download.
Streams take up a specified amount of bandwidth, whereas HTTP file downloads proceed as quickly as the connection allows. It is therefore easier to manage the bandwidth usage of a streaming server than of a web server delivering progressive-download movies.
Broadcasting allows you to deliver coverage of live events as they happen, or to provide real time "chat" between computers.
To sum up, if your movie includes live coverage, you must use broadcasting. If bandwidth management and copy discouragement are paramount considerations, streaming may be your best choice for stored content. If simplicity, reliability, or quality regardless of connection speed are most important to you, progressive download is probably best.

Ref:
http://developer.apple.com/documentation/QuickTime/RM/Fundamentals/QTOverview/QTOverview_Document/chapter_1000_section_6.html

Labels: ,

Thursday, July 24, 2008

How to download you tube video as MP4 file:

How to download you tube video as MP4 file:
-------------------------------------------------------------------
http://www.youtube.com/get_video?video_id=ID&t=SIGNATURE&fmt=18
Download Youtube video:
--------------------------------------
copy the Youtube link
and go to the following URL and give the youtube link in the following site:
"http://vixy.net/rawvideo/"
we will get something like "Right click here to save as mp4 file";
and right click it and open it in a new window;

we will get the URL like above
http://youtube.com/get_video.php?video_id=zskO9O3hF78&t=OEgsToPDskI7pZ1ChBCot9co5DvFysF9&fmt=18
then it will show the file download dialog; and click on save button so that we can save it in local disk;

http://youtube.com/get_video.php?video_id=xoKbDNY0Zwg&t=OEgsToPDskJI-k1mwTeJHOC9_dadX340&fmt=18

Progressive Download Streaming with Quicktime player

Progressive Download Streaming with Quicktime player:
-------------------------------------------------------
1.Install apache
For Progressive Download Streaming, we have to install the Apache server and configured the httpd.conf file's listen 80 as
listen desired_port
listen 8080
put streamable clips in htdocs( default virtual directory of the Apache)
2.Create Streamable clips with Helix mobile producer
Input/Output tab select the input and output file and select the export type and Click on "Export Settings and Meta data" tab and select Export Settings option
as Progressive Download and then select the "Encode" button;
Next thru Quicktime player or Progressive Download Streaming filter, we can do the following;
http://ApacheRunningIP:8080/clip_path
Qt player will play the file;

Labels:

WMP doesnt load the Source Filter

WMP doesnt load the Source Filter Problem:
------------------------------------------------
if we are giving the URL like this:
http://www.youtube.com/get_video?video_id=AdZC8EAp62c&t=OEgsToPDskL9x6BrV7XCzFzahexhvDdL&fm t=18
then the windows media player is not loaded the PD Stream Source DLL;

Currently the youtube URL is not accessible in my system;So kindly give another Wrong URL and check whether the Windows Media player loads our PD Stream Source Filter;
Eventhough the invalid URL we have given to the Windows media player (http://10.205.3.30:8080/test.3gp), the Windows media player loads the PdStream Source filter;
http://10.203./get_video?video_id=AdZC8EAp62c&t=OEgsToPDskL9x6BrV7XCzFzahexhvDdL&fm

with URL without extension, it is not loading the source filter ( Ex: http://192.168.233:8080/test);
I got parameter incorrect if I am using the http://192.168.233:8080/




Even though we registered the custom file type( http://), Windows media player is not able to load the source filter; ( We already registered the File type and source filter in registry ).
Windows media player is able to load the source filter only for the following URL:
URL WindowsMediaPlayer error
http://192.10.198.2:5050/ Parameter Incorrect
http://192.168.10.3:5050/test SourceFilter for this file can't be loaded
http://192.168.10.3:5050/get_video?video_Id=adAZd& t=susisueie&fmt=18
Source Filter for this file can't be loaded

Source Filter class ID is:
{018778CE-07D8-4656-982E-B5DDB16C71DF}

We have not registered the File Extension type (http://) separately. So the Register Custom File type can be done within the Source Filter;( By addding the registry settings Programmatically);

HKEY_CLASSES_ROOT

Source Filter =
Extensions
<.ext1> =
<.ext2> =

if we have sepcified any extensions, if the URL is having that extension, then only the source filter will be loaded;
Ex:
HKEY_CLASSES_ROOT
http://
Source Filter =
Extensions
.ext1 =".mp3"
.ext2 =".mp4"
http://192.168.3.10:5000/test.mp4
http://192.168.3.10:5000/test.mp3 then only it will loads the Source filter
otherwise it will not loads the Source Filter;

Another way of resgistering the source Filter :
----------------------------------------------
HKCR\http
HKCR\http\extensions\
Key and value is as follows:
.mp4 { Filter CLASS ID}
.mp3 { Filter Class ID}
So whenever it is having URL with extension then only WMP will loads the specified class ID source filter;

Finally I have solved the problem;
Solution:
-------------
we have to add the Source Filter and class ID in the HKCR\http;
So now WMP will loads the Source Filter automatically;

Labels: ,

Tuesday, July 15, 2008

Mp4UI tool is an open source file. Many converters are not properly converting the meta data. For Example, If I am converting the video from WMV to MP4 , the meta data available in a WMV is not available in ConvertedMP4 file;

So we can make use of the MP4UI tool to add meta data to the MP4 file;


MP4UI dialog:





Click New/Open button and select MP4 file;




Look at the Lower Right corner, it is having M symbol Just click on this;





After Entering all these information and enable the Part of a compilation check box and Click on OK; it will add the Meta data to the MP4 file;


Using this Metadata, we can know the artist, composer, Singer, Film and so on information about the media file;



Monday, July 14, 2008

Add Meta data to mp4 file thru MP4UI tool

m4a clip meta data problem

m4a clip meta data problem:
-------------------------------------------
we are having two different APIs to read iTune based file format and other 3GP standard file format;
iTune file format is based on Quicktime file format;
They called the m4a file as iTune file format;
M4A,MP4,M4V, MSNV ( MSNV for Sony PSP Video) files are based on the MPEG4 File Format;
MPEG4 File format is based on Quicktime container format;
iTune is also follows Quicktime container format;So quicktime 3GP,MP4 are all based on Quicktime container format;
Even though we rename the files from mp4 to 3GP or 3GP to mp4, the Quicktime displays the video and audio with meta data;
We are having two set of APIs One is to read meta data from Quicktime Meta data(Mp4) and another one is to read meta data from the
3GP file;
Solution:
------------
1.We can call the two APIs Successively to get the meta data information from a file;
2.We can call the Meta data APIs based on file type
( It may not display meta data if we renamed the 3GP file to MP4 file)
3.One more Solution is checking the File format;




Quicktime's iTune,MP4 and 3GP uses the same container format;
Atom:
--------
We can call the meta data APIs based on the file atom;
if the atom is 'ftyp';
Atom Syntax:
--------------
ftyp PreferredBrand MinorVersion CompatibleBrands NULL
Example:
ftyp 3GP4 00 00 02 00( version in Hex) 3Gp4 isom mp41
Compatible brands are
3GP4 isom, mp41;

Preferred Brand:
-----------------
1.4 bytes code ( it may be like 3GP or mp4)
Note:
--------
the Preferred Brand must occur in Compatible Brands list;

3GP standards may have the following
3GP4
3GP5
3GP6
So we will compare the first 3 codes with 3GP, if it is zero


if(_stricmp(code,"3gp") == 0) //Start Code is Equal;
{
}

for MP4 file, it may have mp4,m4v,m4a and isom and so on;
mp41,mp42
so we can make a check like "mp4" with first 3 start codes;
While downloading the MP4 file I faced the problem; its ftyp or Brand code is equal
to 'MSNV' it is not matching to any of the format;MSNV is a sony video PSP recorder format;
Quicktime will do the following to check the file format;

ftyp 3GP4 00 00 02 00( version in Hex) 3Gp4 isom mp41


Quicktime will enumerates the compatible Brands;
Quicktime will checks whether the file is according to the 3GP4 Spec,if it is not, then it will checks
the file format is in isom and if the file format is not in a format of Isom, then Quicktime will check with the
mp41 format; if it is the correct format, then according to the file format,Quicktime will read data from the
file; if media file is not matched with any of the compatible brands, then it will throw "Invalid file format specification"
error;

Labels: ,

Thursday, July 10, 2008

Return values in function argument Pointers

Pointers Sample application:
----------------------------------------
int Function( char* arr)
{
strcpy(arr,"sun");
return 0;
}

void Main()
{
char arr[3];
Function(arr);
printf("\n %s",arr);
}
Expected Output : sun
Actual Result : I got some invalid junk data;


So I modified the main()fn call as follows:

void Main()
{
char arr[3];
Function(&arr[0]);
printf("\n %s",arr);
}
the Output is : sun

Labels:

Return values at function argument pointers

Pointers Sample application:
----------------------------------------
int Function( char* arr)
{
strcpy(arr,"sun");
return 0;
}

void Main()
{
char arr[3];
Function(arr);
printf("\n %s",arr);
}
Expected Output : sun
Actual Result : I got some invalid junk data;


So I modified the main()fn call as follows:

void Main()
{
char arr[3];
Function(&arr[0]);
printf("\n %s",arr);
}
the Output is : sun

Labels:

Differentiate 3GPP and Quicktime compliant

Differentiate 3GPP and Quicktime compliant:
---------------------------------------------------------------
if the atom is 'ftyp',then we will read next 3 bytes;
Based on these 3 bytes, we will identify whether the file is a quicktime compliant or
3GPP compliant;
it may be the following for 3GP compliant:
3GP or 3G2 ( ftyp3gp or ftyp3g2)
For Quicktime compliant ftyp following codes are :
mp4,m4v,m4a (ftypmp4 , ftypm4v,ftypm4a)

Note:
if the file type is .mp4, it may contains the ftyp3GP code

Labels: ,

Wednesday, July 09, 2008

Camera Driver Pin resolution problem


Camera Driver Pin resolution problem:
---------------------------------------------------------
1.Capture pin resolutions must be supported in Preview Pin Resolution;
if Capture Pin resolutions are not matched with the Preview Pin Resolution;
Cause:
--------
This is the bug in camera or capture driver;Capture Pin resolution must be supported in Preview Pin resolution;

Labels: , ,

Monday, July 07, 2008

DSHOW ATL Error

When I try to compile and run the PlayWnd Example in 2005,
the following link problem appears.

error LNK2001: unresolved external symbol "unsigned int (__stdcall* ATL::g_pfnGetThreadACP)(void)" (?g_pfnGetThreadACP@ATL@@3P6GIXZA)

Solution:
------------
I found g_pfnGetThreadACP is defined in USES_CONVERSION which is used in W2T and so on.
Include the atlsd.lib ( It contains the USES_CONVERSION definition);

Labels:

Observation about Less than 1 Sec Video

What I was Done:
------------------
1.I have Queried the GetCurrentPosition () fn from the Player Application;
TIME_FORMAT_MEDIA_TIME flag is set as same as our Filters;
30000 is the Maximum Duration means,if we set the 30001 will set the end of the file;



TrackType =0, Start : 0,Stop :990000
TrackType =0, Start : 990000,Stop :1990000
TrackType =0, Start : 1990000,Stop :3050000
TrackType =0, Start : 3050000,Stop :3990000
TrackType =0, Start : 3990000,Stop :4990000
TrackType =0, Start : 4990000,Stop :5980000
TrackType =0, Start : 5980000,Stop :6980000
Track Type:0 Track Duration is 798,Total Duration is:798
VideoTrack Reaches End: 8380000
TrackType =0, Start : 6980000,Stop :8380000
Stream Time is :7980000 Set it as Properly;
m_nCurrentPos :7980000 for the Last Media Sample we set the TimeStamp as 8380000;
It is more than the Timestamp;

I have used the Player Application there I get the total duration of the media file;
and moreover I printed the current Position using IMediaSeeking interface;
This is the Problem with multimedia file having less than 1 seconds of video and audio;
if I am adding the 200 milli seconds then it works fine;

Labels:

Tuesday, July 01, 2008

windows media player Seek Bar will not work for video having less than 1 second duration?:


windows media player Seek Bar will not work for video having less than 1 second duration?:
-------------------------------------------------------------------------------------------
We checked whether the windows media player will not display the seek bar properly for video having less than 1 second duration;We recorded the wmv video using PIMG with less than 1 second; it is playing fine in media player;

within Motorola cell, we hard reset the device; By default it is having wmv recording;
and recorded the file for testing this scenario;

Labels:

Problem while Playing the video less than one second

Problem while Playing the video less than one second:
-----------------------------------------------------
if the video is having less than one second, media player seek bar never reaches the end position;
I have tested the video which is having less than 8 seconds with
AAC Encoded audio;QCELP Encoded audio,AMR Nb Encoded audio in a 3GP file;
I got the Same Error as follows:

For the video less than 1 seconds:
-----------------------------------
GetDuration : 7930000
End Stop value of Media Sample is : 7190001
7190001 / 7930000 = 0.90 So the Trackbar is not shown at the end of the media player




For Video > 1 seconds:
-------------------
GetDuration : 172400000
End Stop Value of Media Sample is : 172200001
172200001 /172400000 = 0.99 So the Error is not shown clearly in this large video;
The Track bar never reaches the end position of the media player;
So the Problem is with the Timestamp calculation;

Labels: ,

No Time stamp has been set for this sample Error

I got the "No Time stamp has been set for this sample" while playing the 3gp file;
-----------------------------------------------------------------------------------
HRESULT FillBuffer()
{
HRESULT hr;
hr = GetMP4Sample (pSample);
if(SUCCEEDED(hr))
{
REFERENCE_TIME rtStart = 0, rtStop = 0;
hr = pSample->GetTime(&rtStart, &rtStop);
if(SUCCEEDED(hr))
{
wchar_t szMsg[MAX_PATH];
swprintf(szMsg,L"\n 0-vid,1- audio,TrackType = %d, Start = %ld, Stop : %ld",m_nTrakType,(LONG)rtStart,(LONG) rtStop);
OutputDebugString(szMsg);
}
}
return hr;

}



Solution:
===========
the above code displays the "No timestamp has been set for this sample " error;
Reason is
if GetTime() is failed, then that hr value will be returned from the
FillBuffer() fn; So I got this error; if I modified it as follows, then I wont get an error;

hr = GetMP4Sample (pSample);
if(SUCCEEDED(hr))
{
REFERENCE_TIME rtStart = 0, rtStop = 0;
HRESULT temphr = pSample->GetTime(&rtStart, &rtStop);
if(SUCCEEDED(temphr))
{
wchar_t szMsg[MAX_PATH];
swprintf(szMsg,L"\n 0-vid,1- audio,TrackType = %d, Start = %ld, Stop : %ld",m_nTrakType,(LONG)rtStart,(LONG) rtStop);
OutputDebugString(szMsg);
}
}

Labels: ,

Record the video and audio using PIMG with desired video and audio encoder

Record the video and audio using PIMG with desired video and audio encoder:
----------------------------------------------------------------------------

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Pictures\Camera\OEM\AudioEncoderClassID as AAC Encoder's ClassID
\VideoProfile\1\AudioEncoderCLassID
\VideoProfile\2\AudioEncoderClassID
\VideoProfile\3\AudioEncoderClassID;
\VideoEncoderClassID
\MuxerClassID

{f0db0b53-53ff-49b9-8c51-4ed44cec6d46} - AAC Encoder
just copy our encoder DMO class ID at the above specified registry location;
The Pimg ( Microsoft's PIMG pictures and videos) record , encode and multiplex the video according to the OEM registry settings;
I have tested this behavior in Motorola; But some mobiles may not implement this behavior; Example : Asus;
By Default if it is recording wmv file means, those informations will be available in this registry location;

Labels: , ,