示例#1
0
status_t
MovieEncoder::Encode(const media_format_family& family,
					const media_file_format& fileFormat,
					const media_format& format,
					const media_codec_info& info,
					const color_space& space)
{
	SetMediaFormatFamily(family);
	SetMediaFileFormat(fileFormat);
	SetMediaFormat(format);
	SetMediaCodecInfo(info);
	SetColorSpace(space);
	
	return Encode();
}
示例#2
0
Controller::Controller()
	:
	BLooper("Controller"),
	fCaptureThread(-1),
	fNumFrames(0),
	fKillThread(true),
	fPaused(false),
	fDirectWindowAvailable(false),
	fEncoder(NULL),
	fEncoderThread(-1),
	fFileList(NULL),
	fCodecList(NULL)
{
	memset(&fDirectInfo, 0, sizeof(fDirectInfo));
	
	fEncoder = new MovieEncoder;

	Settings settings;	
	BString name = settings.OutputFileName();
	fEncoder->SetOutputFile(name.String());

	BRect rect = settings.CaptureArea();
	SetCaptureArea(rect);
	
	BString fileFormatName;
	settings.GetOutputFileFormat(fileFormatName);
	
	media_file_format fileFormat;
	if (!get_media_file_format(fileFormatName.String(), &fileFormat)) {
		if (!get_media_file_format(NULL, &fileFormat))
			throw "Unable to find a suitable media_file_format!";
	}		
	
	SetMediaFileFormat(fileFormat);
	
	BString codecName;
	settings.GetOutputCodec(codecName);
	
	if (codecName != "")
		SetMediaCodec(codecName);
	else
		SetMediaCodec(fCodecList->ItemAt(0)->pretty_name);
	Run();
}