|
简单的jpeg转成avi的类(12) } nbw = 0; if ((nbr = read (fd, buff, 6)) != 6) { cerr << "reading error" << endl; fclose (fdest); close (fd); return -4; } fwrite (buff, nbr, 1, fdest); read (fd, buff, 4); fwrite ("AVI1", 4, 1, fdest); nbw = 10; while ((nbr = read (fd, buff, 512)) > 0){ #ifdef DEBUG_VERSION //cout << "read " << nbr << " bytes from " << (*iter)->name << endl; #endif fwrite (buff, nbr, 1, fdest); nbw += nbr; } if (remnant > 0) { fwrite (buff, remnant, 1, fdest); nbw += remnant; } tnbw += nbw; close (fd); } if (tnbw != jpg_sz) { cerr << "error writing images (wrote " << tnbw << " bytes, expected " << jpg_sz << " bytes)" << endl; fclose (fdest); return -5; } /* indices */ fwrite ("idx1", 4, 1, fdest); print_quartet (fdest, 16 * frames); for (vector <Jpeg_Data*>::iterator iter = this->jpeg_list.begin (); iter != jpeg_list.end (); ++iter) { fwrite ("00db", 4, 1, fdest); print_quartet (fdest, 18); print_quartet (fdest, (*iter)->offset); print_quartet (fdest, (*iter)->size); } //this->jpeg_list.clear (); fclose (fdest); return 0; }
//main.cpp 测试文件 // tmp.cpp : 定义控制台应用程序的入口点。 // #include <iostream> #include <fstream> #include "AviGenerator.h" using namespace std; int main(int argc, char* argv[])
|