From 511b49048fb62a56f7049045e0e3d85c5b3e8745 Mon Sep 17 00:00:00 2001 From: deva Date: Tue, 17 May 2005 19:16:26 +0000 Subject: Made new mpeg writer work, with proper file permissions. --- src/mov_encoder.cc | 11 +++++++++-- src/mov_encoder_thread.cc | 24 +++++++++++++++++++----- src/server.cc | 8 ++++++-- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/mov_encoder.cc b/src/mov_encoder.cc index bb24c5a..172051d 100644 --- a/src/mov_encoder.cc +++ b/src/mov_encoder.cc @@ -39,6 +39,10 @@ /* * $Log$ + * Revision 1.22 2005/05/17 19:16:26 deva + * + * Made new mpeg writer work, with proper file permissions. + * * Revision 1.21 2005/05/17 14:30:56 deva * Added code, preparing threaded encoding. * @@ -288,15 +292,18 @@ Frame *MovEncoder::encode_video(Frame *dvframe) // Allocate a new frame for the output Frame *output = new Frame(NULL, FAME_BUFFER_SIZE); - unsigned int pt = (unsigned int)output->data; + output->size = 0; + unsigned char* pt = output->data; // Encode YUV frame and write it to disk. fame_start_frame(fame_context, &yuv, 0); int written; + while((written = fame_encode_slice(fame_context))) { // fwrite(fame_buffer, written, 1, f); - memcpy((void *)pt, fame_buffer, written); + memcpy(pt, fame_buffer, written); pt += written; + output->size += written; } fame_end_frame(fame_context,0); diff --git a/src/mov_encoder_thread.cc b/src/mov_encoder_thread.cc index 63c0bd2..da83744 100644 --- a/src/mov_encoder_thread.cc +++ b/src/mov_encoder_thread.cc @@ -31,6 +31,10 @@ /* * $Log$ + * Revision 1.4 2005/05/17 19:16:26 deva + * + * Made new mpeg writer work, with proper file permissions. + * * Revision 1.3 2005/05/17 15:13:15 deva * *** empty log message *** * @@ -44,11 +48,17 @@ #include #include "mov_encoder_thread.h" +#include MovEncoderThread::MovEncoderThread(const char *filename) { - file = open(filename, O_CREAT | O_EXCL, S_IRWXU | S_IRGRP | S_IROTH); - + file = open(filename, + O_CREAT | O_WRONLY, //| O_LARGEFILE + S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + if(file == -1) { + fprintf(stderr, "File not opened %s\n", strerror(errno)); + return; + } threads = 4; for(int cnt = 0; cnt < threads; cnt++) { @@ -61,13 +71,17 @@ MovEncoderThread::~MovEncoderThread() for(int cnt = 0; cnt < threads; cnt++) { delete encs[cnt]; } - if(file) close(file); + if(file != -1) close(file); } void MovEncoderThread::encode(Frame* frame) { - if(!file) return; + if(file == -1) return; + Frame *enc_frame = encs[0]->encode(frame); - write(file, enc_frame->data, enc_frame->size); + // fprintf(stderr, "[%d]", enc_frame->size); fflush(stderr); + int i = write(file, enc_frame->data, enc_frame->size); + if(i == -1) perror("Write failed"); + delete enc_frame; } diff --git a/src/server.cc b/src/server.cc index 03f9552..135fb27 100644 --- a/src/server.cc +++ b/src/server.cc @@ -31,6 +31,10 @@ /* * $Log$ + * Revision 1.17 2005/05/17 19:16:26 deva + * + * Made new mpeg writer work, with proper file permissions. + * * Revision 1.16 2005/05/17 15:12:51 deva * Fixed file rights (All read on files and directories, and all execute on directories). * @@ -232,7 +236,7 @@ MovEncoderThread *newMovEncoder(char* cpr) // Create folder named birthmonth in server root sprintf(fname, "%s/%s", root->c_str(), birthmonth); - if(!mkdir(fname, S_IRWXU) == -1 && errno != EEXIST) { + if(!mkdir(fname, S_IRWXU | S_IRGRP | S_IXGRP | S_IXOTH | S_IROTH) == -1 && errno != EEXIST) { int r = rand(); fprintf(stderr, "Not possible to create subfolder %s\n", fname); fprintf(stderr, "Redirecting output to [/tmp/miav-%d.mpg]\n", r); @@ -243,7 +247,7 @@ MovEncoderThread *newMovEncoder(char* cpr) // Create folder named cpr in serverroot/birthmonth sprintf(fname, "%s/%s/%s", root->c_str(), birthmonth, cpr); - if(!mkdir(fname, S_IRWXU) == -1 && errno != EEXIST) { + if(!mkdir(fname, S_IRWXU | S_IRGRP | S_IXGRP | S_IXOTH | S_IROTH) == -1 && errno != EEXIST) { int r = rand(); fprintf(stderr, "Not possible to create subfolder %s\n", fname); fprintf(stderr, "Redirecting output to [/tmp/miav-%d.mpg]\n", r); -- cgit v1.2.3