Click here to Skip to main content
16,005,697 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: DLL Compile Help Pin
ThatsAlok11-Mar-06 19:48
ThatsAlok11-Mar-06 19:48 
GeneralRe: DLL Compile Help Pin
nimishsudan12-Mar-06 4:29
nimishsudan12-Mar-06 4:29 
Question[OpenGL] Help needed!Listen to my problem please... Pin
carlsoncarlson10-Mar-06 16:46
carlsoncarlson10-Mar-06 16:46 
AnswerRe: [OpenGL] Help needed!Listen to my problem please... Pin
Hamid_RT10-Mar-06 17:35
Hamid_RT10-Mar-06 17:35 
GeneralRe: [OpenGL] Help needed!Listen to my problem please... Pin
carlsoncarlson11-Mar-06 14:12
carlsoncarlson11-Mar-06 14:12 
AnswerRe: [OpenGL] Help needed!Listen to my problem please... Pin
El Corazon11-Mar-06 14:02
El Corazon11-Mar-06 14:02 
GeneralRe: [OpenGL] Help needed!Listen to my problem please... Pin
carlsoncarlson11-Mar-06 14:11
carlsoncarlson11-Mar-06 14:11 
QuestionWindows Media Format Video Image 9 Problem Pin
Kin Tutnik10-Mar-06 16:41
Kin Tutnik10-Mar-06 16:41 
Hi all,
i have write an application that create a movie from series of images. but i have some problem when writing the sample to the writer for the second times. It's return with error code NS_E_INVALID_DATA (0xc00d002f).
my complete code is like below :

// Aduuuuuuh.cpp : main project file.

#include "stdafx.h"
//#include <memory.h>;
#include "resource.h"

using namespace System;
using namespace System::Drawing;


int main(array<System::String ^> ^args)
{
IWMProfileManager *manager = NULL;
IWMProfile *profile = NULL;
IWMCodecInfo *codecInfo = NULL;
IWMMediaProps *mediaProps = NULL;
IWMStreamConfig *streamConfig = NULL;
WM_MEDIA_TYPE *mediaType = NULL;
WMVIDEOINFOHEADER *infoHeader = NULL;
IWMPropertyVault *propertyVault = NULL;

IWMWriter *writer = NULL;
IWMInputMediaProps *inputProps = NULL;
HRESULT hr = S_OK;
LONG vHeight = 240;
LONG vWidth = 320;

CoInitialize(NULL);
hr = WMCreateProfileManager(&manager); THROW_EXCEPTION(hr);
hr = manager->QueryInterface(IID_IWMCodecInfo, (void**)&codecInfo); THROW_EXCEPTION(hr);

hr = codecInfo->GetCodecFormat(WMMEDIATYPE_Video, 6, 0, &streamConfig); THROW_EXCEPTION(hr);
hr = streamConfig->QueryInterface(IID_IWMMediaProps, (void**)&mediaProps); THROW_EXCEPTION(hr);

DWORD count = 0;
hr = mediaProps->GetMediaType(NULL, &count); THROW_EXCEPTION(hr);
mediaType = (WM_MEDIA_TYPE*) new BYTE[count];
hr = mediaProps->GetMediaType(mediaType, &count); THROW_EXCEPTION(hr);
infoHeader = (WMVIDEOINFOHEADER*)mediaType->pbFormat;
infoHeader->dwBitRate = 100000;
infoHeader->AvgTimePerFrame = ((LONGLONG)10000000 / (LONGLONG) 30);
infoHeader->bmiHeader.biWidth = vWidth;
infoHeader->bmiHeader.biHeight = vHeight;
infoHeader->bmiHeader.biSizeImage = vWidth * vHeight * 3;
infoHeader->rcSource.right = vWidth;
infoHeader->rcSource.bottom = vHeight;
infoHeader->rcTarget.right = vWidth;
infoHeader->rcTarget.bottom = vHeight;
mediaProps->SetMediaType(mediaType);

//delete[] mediaType;
//hr = streamConfig->QueryInterface<IWMPropertyVault>(&propertyVault);
//BOOL isVBR = FALSE;
//hr = propertyVault->SetProperty(g_wszVBREnabled, WMT_TYPE_BOOL, (BYTE*)&isVBR, sizeof(isVBR)); THROW_EXCEPTION(hr);


hr = manager->CreateEmptyProfile(WMT_VER_9_0, &profile); THROW_EXCEPTION(hr);
hr = streamConfig->SetStreamNumber(1); THROW_EXCEPTION(hr);
hr = streamConfig->SetBitrate(100000);THROW_EXCEPTION(hr);
hr = streamConfig->SetBufferWindow(3000);THROW_EXCEPTION(hr);
hr = profile->AddStream(streamConfig); THROW_EXCEPTION(hr);

CoInitialize(NULL);
hr = WMCreateWriter(NULL, &writer); THROW_EXCEPTION(hr);
hr = writer->SetProfile(profile); THROW_EXCEPTION(hr);

hr = writer->GetInputProps(0, &inputProps);THROW_EXCEPTION(hr);
count = 0;
hr = inputProps->GetMediaType(NULL, &count);THROW_EXCEPTION(hr);
mediaType = (WM_MEDIA_TYPE*) new BYTE[count];
hr = inputProps->GetMediaType(mediaType, &count); THROW_EXCEPTION(hr);
mediaType->subtype = WMMEDIASUBTYPE_VIDEOIMAGE;
hr = inputProps->SetMediaType(mediaType);THROW_EXCEPTION(hr);
infoHeader = (WMVIDEOINFOHEADER*) mediaType->pbFormat;

hr = inputProps->SetMediaType(mediaType);THROW_EXCEPTION(hr);
//delete[] mediaType;


//------------------- writing
hr = writer->SetOutputFilename(L"C:\\Pliiiis.wmv");THROW_EXCEPTION(hr);
hr = writer->BeginWriting(); THROW_EXCEPTION(hr);

#pragma region convert bitmap to byte*
Bitmap ^gambar = gcnew Bitmap("C:\\source.bmp");
array<unsigned char, 1>^ memStr = gcnew array<unsigned char, 1>(vWidth * vHeight * 3 + 54);
System::IO::MemoryStream ^ms = gcnew System::IO::MemoryStream(memStr);
gambar->Save(ms, Imaging::ImageFormat::Bmp);

BYTE* bmp = new BYTE[vWidth * vHeight * 3];
for(int i = 54; i < ((vWidth * vHeight * 3) + 54); i ++)
{
*(bmp + i - 54) = memStr[i];
}
#pragma endregion

#pragma region Sample header 1
WMT_VIDEOIMAGE_SAMPLE2 *sample = (WMT_VIDEOIMAGE_SAMPLE2*) new BYTE[sizeof(WMT_VIDEOIMAGE_SAMPLE2)];

sample->dwMagic = WMT_VIDEOIMAGE_MAGIC_NUMBER_2;
sample->dwStructSize = sizeof(WMT_VIDEOIMAGE_SAMPLE2);
sample->dwViewportWidth = vWidth;
sample->dwViewportHeight = vHeight;

sample->dwCurrImageWidth = vWidth;
sample->dwCurrImageHeight = vHeight;
sample->fCurrRegionX0 = 0;
sample->fCurrRegionY0 = 0;
sample->fCurrRegionWidth = (FLOAT)vWidth;
sample->fCurrRegionHeight = (FLOAT)vHeight;

sample->dwPrevImageWidth = vWidth;
sample->dwPrevImageHeight = vHeight;
sample->fPrevRegionX0 = 0;
sample->fPrevRegionY0 = 0;
sample->fPrevRegionWidth = (FLOAT)vWidth;
sample->fPrevRegionHeight = (FLOAT)vHeight;

sample->dwEffectType = 0;
sample->dwNumEffectParas = 0;

sample->bKeepPrevImage = FALSE;

sample->dwControlFlags = WMT_VIDEOIMAGE_SAMPLE_INPUT_FRAME;
//TODO : create blending transision here
sample->fCurrBlendCoef = 1;
sample->fPrevBlendCoef = 0;
#pragma endregion


INSSBuffer *buffer = NULL;
QWORD timeCounter = 0;
QWORD vidTime = 0;
DWORD len = vHeight * vWidth * 3;
for(int i = 0; i < 60; i ++)
{

#pragma region first photo
if(i == 0)
{
BYTE *loc = NULL;
DWORD sampleSize = sizeof(WMT_VIDEOIMAGE_SAMPLE2);
DWORD size = len + sampleSize;
hr = writer->AllocateSample(size, &buffer);THROW_EXCEPTION(hr);
DWORD bufferLength = 0;
buffer->GetBufferAndLength(&loc, &bufferLength);
errno_t err = memcpy_s(loc, sampleSize, sample, sampleSize);THROW_EXCEPTION(hr);
err = memcpy_s((loc + sampleSize), len, bmp, len);
hr = buffer->SetLength(size);
THROW_EXCEPTION(hr);
hr = writer->WriteSample(0, vidTime, 0, buffer);THROW_EXCEPTION(hr);

//delete loc;
//loc = NULL;
buffer->Release();
buffer = NULL;
}
#pragma endregion

#pragma region the next
else
{
sample->dwControlFlags = WMT_VIDEOIMAGE_SAMPLE_OUTPUT_FRAME |
WMT_VIDEOIMAGE_SAMPLE_USES_CURRENT_INPUT_FRAME;
BYTE *loc = NULL;
DWORD size = sizeof(WMT_VIDEOIMAGE_SAMPLE2);
hr = writer->AllocateSample(size, &buffer);THROW_EXCEPTION(hr);
buffer->GetBuffer(&loc);
memcpy_s(loc, size, sample, size);
hr = buffer->SetLength(size);THROW_EXCEPTION(hr);


//------------------------Error appears here with code NS_E_INVALID_DATA
hr = writer->WriteSample(0, vidTime, 0, buffer);THROW_EXCEPTION(hr);

buffer->Release();
buffer = NULL;
}
#pragma endregion

vidTime = (++timeCounter * 1000)/30;
}

hr = writer->EndWriting();THROW_EXCEPTION(hr);
return 0;
}

QuestionWhat are the differences between VC++ and .Net Pin
Sriram Suresh10-Mar-06 15:45
Sriram Suresh10-Mar-06 15:45 
AnswerRe: What are the differences between VC++ and .Net Pin
Hamid_RT10-Mar-06 18:12
Hamid_RT10-Mar-06 18:12 
AnswerRe: What are the differences between VC++ and .Net Pin
ThatsAlok10-Mar-06 18:24
ThatsAlok10-Mar-06 18:24 
QuestionAnother Error Pin
romuzu10-Mar-06 15:00
romuzu10-Mar-06 15:00 
AnswerRe: Another Error Pin
John M. Drescher10-Mar-06 15:25
John M. Drescher10-Mar-06 15:25 
Questionunexpected end of file while looking for precompiled header directive Pin
romuzu10-Mar-06 14:42
romuzu10-Mar-06 14:42 
AnswerRe: unexpected end of file while looking for precompiled header directive Pin
John M. Drescher10-Mar-06 15:21
John M. Drescher10-Mar-06 15:21 
GeneralRe: unexpected end of file while looking for precompiled header directive Pin
romuzu10-Mar-06 16:04
romuzu10-Mar-06 16:04 
GeneralRe: unexpected end of file while looking for precompiled header directive Pin
John M. Drescher10-Mar-06 16:32
John M. Drescher10-Mar-06 16:32 
AnswerRe: unexpected end of file while looking for precompiled header directive Pin
Intertherain10-Mar-06 16:01
Intertherain10-Mar-06 16:01 
AnswerRe: unexpected end of file while looking for precompiled header directive Pin
Michael Dunn10-Mar-06 16:15
sitebuilderMichael Dunn10-Mar-06 16:15 
QuestionIHTMLDOMNode and IHTMLElement and leading spaces Pin
mcahriman10-Mar-06 10:59
mcahriman10-Mar-06 10:59 
AnswerRe: IHTMLDOMNode and IHTMLElement and leading spaces Pin
Gerald Schwab10-Mar-06 12:00
Gerald Schwab10-Mar-06 12:00 
GeneralRe: IHTMLDOMNode and IHTMLElement and leading spaces Pin
mcahriman14-Mar-06 6:56
mcahriman14-Mar-06 6:56 
QuestionExecute program Pin
sam117310-Mar-06 10:39
sam117310-Mar-06 10:39 
AnswerRe: Execute program Pin
georgeraafat10-Mar-06 13:48
georgeraafat10-Mar-06 13:48 
QuestionReadProcessMemory alternative Pin
MaTTEvIL10-Mar-06 10:18
MaTTEvIL10-Mar-06 10:18 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.