diff options
| -rw-r--r-- | src/Makefile.am | 9 | ||||
| -rw-r--r-- | src/camera.cc | 4 | ||||
| -rw-r--r-- | src/camera.h | 4 | ||||
| -rw-r--r-- | src/decoder.cc | 73 | ||||
| -rw-r--r-- | src/decoder.h | 17 | ||||
| -rw-r--r-- | src/dvframe.h | 47 | ||||
| -rw-r--r-- | src/encoder.cc | 11 | ||||
| -rw-r--r-- | src/encoder.h | 17 | ||||
| -rw-r--r-- | src/ffframe.cc | 41 | ||||
| -rw-r--r-- | src/frame.cc (renamed from src/dvframe.cc) | 13 | ||||
| -rw-r--r-- | src/frame.h (renamed from src/ffframe.h) | 18 | ||||
| -rw-r--r-- | src/img_encoder.cc | 6 | ||||
| -rw-r--r-- | src/img_encoder.h | 4 | ||||
| -rw-r--r-- | src/mov_encoder.cc | 6 | ||||
| -rw-r--r-- | src/mov_encoder.h | 4 | ||||
| -rw-r--r-- | src/player.cc | 48 | ||||
| -rw-r--r-- | src/player.h | 10 | ||||
| -rw-r--r-- | src/queue.h | 4 | ||||
| -rw-r--r-- | src/server.cc | 14 | ||||
| -rw-r--r-- | src/server.h | 2 | 
20 files changed, 124 insertions, 228 deletions
| diff --git a/src/Makefile.am b/src/Makefile.am index 24c6972..4f0ffa2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -11,9 +11,8 @@ miav_SOURCES = $(shell  if [ $QT_CXXFLAGS ] ; then ../tools/MocList cc; fi ) \  	aboutwindow.cc \  	camera.cc \  	decoder.cc \ -	dvframe.cc \  	encoder.cc \ -	ffframe.cc \ +	frame.cc \  	mainwindow.cc \  	cprquerydialog.cc \  	miav.cc \ @@ -37,10 +36,9 @@ EXTRA_DIST = \  	camera.h \  	cprquerydialog.h \  	decoder.h \ -	dvframe.h \  	encoder.h \  	error.h \ -	ffframe.h \ +	frame.h \  	img_encoder.h \  	mainwindow.h \  	messagebox.h \ @@ -55,7 +53,8 @@ EXTRA_DIST = \  	socket.h \  	thread.h \  	util.h \ -	videowidget.h +	videowidget.h \ +	debug.h  miav_LDADD := $(shell  if [ $QT_CXXFLAGS ] ; then ../tools/MocList o; fi ) \  	-lavcodec -lavformat diff --git a/src/camera.cc b/src/camera.cc index a73c063..449c653 100644 --- a/src/camera.cc +++ b/src/camera.cc @@ -46,8 +46,8 @@ void Camera::connect(const char *ip, const int port)  	av_register_all(); -	encode_queue = new Queue<DVFrame>(); // infinite size -	player_queue = new Queue<FFFrame>(1); // fixed size of 1 +	encode_queue = new Queue<Frame>(); // infinite size +	player_queue = new Queue<Frame>(1); // fixed size of 1  	sem_init(&encode_sem, 0, 0);  	sem_init(&player_sem, 0, 0); diff --git a/src/camera.h b/src/camera.h index e5b4cee..ab18d04 100644 --- a/src/camera.h +++ b/src/camera.h @@ -88,8 +88,8 @@ private:    Decoder *decoder;    Player *player; -  Queue<DVFrame> *encode_queue; -  Queue<FFFrame> *player_queue; +  Queue<Frame> *encode_queue; +  Queue<Frame> *player_queue;    sem_t encode_sem;    sem_t player_sem;    pthread_mutex_t mutex;// = PTHREAD_MUTEX_INITIALIZER; diff --git a/src/decoder.cc b/src/decoder.cc index 10ef245..9633f18 100644 --- a/src/decoder.cc +++ b/src/decoder.cc @@ -27,14 +27,15 @@  #include <fcntl.h>  #include <errno.h>  #include <libraw1394/raw1394.h> +  #include "decoder.h"  #include "debug.h"  Decoder::Decoder(Error* err,                   sem_t *gencode_sem,                   sem_t *gplayer_sem, -                 Queue<DVFrame> *gencode_queue, -                 Queue<FFFrame> *gplayer_queue, +                 Queue<Frame> *gencode_queue, +                 Queue<Frame> *gplayer_queue,                   pthread_mutex_t *gmutex,                   volatile int *grunning)  { @@ -46,24 +47,12 @@ Decoder::Decoder(Error* err,    mutex = gmutex;    running = grunning; -  AVCodec *dec_codec; - -  // Find ffmpeg-dv-codec -  if(!(dec_codec = avcodec_find_decoder(CODEC_ID_DVVIDEO))) { -    errobj->pushError("Unable to find codec."); -    return; -  } - -  // Initialize ffmpeg-dv-codec -  if(avcodec_open(&dvcodec, dec_codec) < 0) { -    errobj->pushError("Error while opening codec for input stream."); -    return; -  } +  // Initialize libdv  }  Decoder::~Decoder()  { -  avcodec_close(&dvcodec); +  // Close libdv  }  static int raw_reader( raw1394handle_t handle, int channel, size_t length, quadlet_t *data ) @@ -120,7 +109,7 @@ static int raw_reader( raw1394handle_t handle, int channel, size_t length, quadl  			memcpy( framedata + dif_sequence * 150 * 80 + ( 7 + ( dif_block / 15 ) + dif_block ) * 80, p, 480 );  			break; -		default:   // we can“t handle any other data +		default:   // we can't handle any other data  			break;  		}  	} @@ -164,69 +153,41 @@ void Decoder::decode()    raw1394_start_iso_rcv( handle, channel);    while(*running) { -    AVPacket pkt;      uint8_t *ptr;      int len;      SDL_Event user_event; +    // Read a dvframe      while(1) {        raw1394_loop_iterate(handle); -      pkt.data = (uint8_t *)raw1394_get_userdata(handle); -      if(pkt.data) { +      ptr = (uint8_t *)raw1394_get_userdata(handle); +      if(ptr) {           raw1394_set_userdata(handle, NULL);           break;        } +      len = DVPACKAGE_SIZE;      } -printf("1"); fflush(stdout); -    len = pkt.size = DVPACKAGE_SIZE; -    ptr = pkt.data; -    pkt.stream_index = 0; - -    // NOTE: we only decode video, we only need the data from stream_index 0 -    // (stream 0: video, stream 1: audio) -    //    while(pkt.stream_index == 0 && len > 0) { -    int ret; -    int got_picture; -    //      buf_t *buf = buf_alloc(); -    FFFrame *fff = new FFFrame(); ALLOC(fff, "FFFrame in decode"); -    memset(fff->frame, 0 , sizeof(AVFrame)); -    //DVFrame *dvf = new DVFrame(); ALLOC(dvf, "DVFrame in decode"); -    //      dvf->type = DVF_VIDEO; -     -    //      memcpy(dvf->frame, ptr, len); -     -printf("2"); fflush(stdout); -    ret = avcodec_decode_video(&dvcodec, fff->frame, &got_picture, ptr, len); -printf("3"); fflush(stdout); -     -    if(ret < 0) { -      errobj->pushError("Error while decoding stream."); -      return; -    } -     -printf("4"); fflush(stdout); +    Frame *frame = new Frame((void*)ptr, len); +      pthread_mutex_lock(mutex); -    //    encode_queue->push(dvf); -    player_queue->push(fff); +    encode_queue->push(frame); +    player_queue->push(frame);      pthread_mutex_unlock(mutex); -printf("5"); fflush(stdout);      sem_post(encode_sem); +    // Create and send SDL event.      user_event.type = SDL_USEREVENT;      user_event.user.code = 0;      user_event.user.data1 = NULL;      user_event.user.data2 = NULL; -printf("6"); fflush(stdout);      SDL_PushEvent(&user_event); -printf("7"); fflush(stdout); +    // Free framedata.      free(ptr); -printf("8"); fflush(stdout);    } -printf("9"); fflush(stdout); -  /* Kick the others so they wake up with empty queues */ +  // Kick the others so they wake up with empty queues    sem_post(encode_sem);    pthread_exit(NULL);  } diff --git a/src/decoder.h b/src/decoder.h index 6d50e5b..0fd09d1 100644 --- a/src/decoder.h +++ b/src/decoder.h @@ -30,24 +30,25 @@  #include <stdio.h>  #include <stdlib.h>  #include <string.h> -#include <avformat.h> +//#include <avformat.h>  #include <SDL/SDL.h> -#include <queue.h> +#include "queue.h"  #include "encoder.h"  #include "player.h"  #include "thread.h" -#include "ffframe.h" -#include <dvframe.h> +#include "frame.h" + +#define DVPACKAGE_SIZE 144000  class Decoder : public Thread {  public:    Decoder(Error* err,            sem_t *gencode_sem,            sem_t *gplayer_sem, -          Queue<DVFrame> *gencode_queue, -          Queue<FFFrame> *gplayer_queue, +          Queue<Frame> *gencode_queue, +          Queue<Frame> *gplayer_queue,            pthread_mutex_t *gmutex,            volatile int *grunning);    ~Decoder(); @@ -59,8 +60,8 @@ private:    sem_t *encode_sem;    sem_t *player_sem; -  Queue<DVFrame> *encode_queue; -  Queue<FFFrame> *player_queue; +  Queue<Frame> *encode_queue; +  Queue<Frame> *player_queue;    pthread_mutex_t *mutex;    volatile int *running; diff --git a/src/dvframe.h b/src/dvframe.h deleted file mode 100644 index 3bf61fe..0000000 --- a/src/dvframe.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            frame.h - * - *  Mon Nov 15 19:45:07 CET 2004 - *  Copyright  2004 Bent Bisballe - *  deva@aasimon.org - ****************************************************************************/ - -/* - *  This program is free software; you can redistribute it and/or modify - *  it under the terms of the GNU General Public License as published by - *  the Free Software Foundation; either version 2 of the License, or - *  (at your option) any later version. - * - *  This program is distributed in the hope that it will be useful, - *  but WITHOUT ANY WARRANTY; without even the implied warranty of - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *  GNU Library General Public License for more details. - * - *  You should have received a copy of the GNU General Public License - *  along with this program; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#include <config.h> -#ifndef __DVFRAME_H__ -#define __DVFRAME_H__ - -#include <avformat.h> - -#define DVPACKAGE_SIZE 144000 - -typedef enum { -  DVF_AUDIO = 0x01, -  DVF_VIDEO = 0x02 -} DVFrameType; - - -class DVFrame { -public: -  DVFrame(); -  ~DVFrame(); -  DVFrameType type; -  char frame[DVPACKAGE_SIZE]; -}; - -#endif/*__DVFRAME_H__*/ diff --git a/src/encoder.cc b/src/encoder.cc index ca8fb4f..a762c99 100644 --- a/src/encoder.cc +++ b/src/encoder.cc @@ -30,7 +30,7 @@ Encoder::Encoder(Error* err,                   const char *gip,                   const int gport,                   sem_t	*gsem, -                 Queue<DVFrame> *gqueue, +                 Queue<Frame> *gqueue,                   pthread_mutex_t *gmutex,                   volatile int *grunning)  { @@ -68,7 +68,7 @@ Encoder::~Encoder()  void Encoder::encode()  {  -  DVFrame *f; +  Frame *f;    while(*running) {      sem_wait(sem); @@ -92,10 +92,11 @@ void Encoder::encode()        if(freeze_request != freeze_value) freeze_value = freeze_request;        if(shoot_request != shoot_value) shoot_value = shoot_request; -      n->sendPackage(&h, f->frame, sizeof(f->frame)); +      n->sendPackage(&h, f->data, f->size); +   +      free(f->data); +      delete f;      } -     -    if(f) delete f;    }    pthread_exit(NULL);  } diff --git a/src/encoder.h b/src/encoder.h index 75788b4..d9534b3 100644 --- a/src/encoder.h +++ b/src/encoder.h @@ -30,17 +30,14 @@  #include <stdio.h>  #include <stdlib.h>  #include <string.h> -#include <avformat.h> - -#include <miav.h> +//#include <avformat.h> +#include "miav.h"  #include "util.h" -#include <queue.h> -  #include "package.h" -  #include "thread.h" -#include <dvframe.h> +#include "frame.h" +#include "queue.h"  // FIXME: One size fits all...  #define VIDEO_BUFFER_SIZE	(1024*1024) @@ -56,7 +53,7 @@ public:            const char *gip,            const int gport,            sem_t	*gsem, -          Queue<DVFrame> *gqueue, +          Queue<Frame> *gqueue,            pthread_mutex_t *gmutex,            volatile int *grunning);    ~Encoder(); @@ -71,9 +68,9 @@ public:    void run(); -  AVFormatContext *fc; +  //  AVFormatContext *fc;    sem_t	*sem; -  Queue<DVFrame> *queue; +  Queue<Frame> *queue;    pthread_mutex_t *mutex;    volatile int *running; diff --git a/src/ffframe.cc b/src/ffframe.cc deleted file mode 100644 index d2bd5f9..0000000 --- a/src/ffframe.cc +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            frame.cc - * - *  Mon Nov 15 19:45:07 CET 2004 - *  Copyright  2004 Bent Bisballe - *  deva@aasimon.org - ****************************************************************************/ - -/* - *  This program is free software; you can redistribute it and/or modify - *  it under the terms of the GNU General Public License as published by - *  the Free Software Foundation; either version 2 of the License, or - *  (at your option) any later version. - * - *  This program is distributed in the hope that it will be useful, - *  but WITHOUT ANY WARRANTY; without even the implied warranty of - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *  GNU Library General Public License for more details. - * - *  You should have received a copy of the GNU General Public License - *  along with this program; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#include <config.h> -#include "ffframe.h" - -#include "debug.h" - -FFFrame::FFFrame() -{ -  frame = avcodec_alloc_frame(); ALLOC(frame, "FFFrame (inside obj)"); -  fprintf(stderr, "Frame: %d, \n", frame); fflush(stderr); -} - -FFFrame::~FFFrame() -{ -	av_free(frame); FREE(frame); -} - diff --git a/src/dvframe.cc b/src/frame.cc index c1948ba..61b2ec7 100644 --- a/src/dvframe.cc +++ b/src/frame.cc @@ -22,18 +22,19 @@   *  along with this program; if not, write to the Free Software   *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.   */ -#include <config.h> -#include "dvframe.h" +#include <config.h> +#include "frame.h" -#include <memory.h> +#include "debug.h" -DVFrame::DVFrame() +Frame::Frame(void *d, int sz)  { -  memset(frame, 0, sizeof(frame)); +  data = d; +  size = sz;  } -DVFrame::~DVFrame() +Frame::~Frame()  {  } diff --git a/src/ffframe.h b/src/frame.h index 5b02780..8894dff 100644 --- a/src/ffframe.h +++ b/src/frame.h @@ -23,16 +23,16 @@   *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.   */  #include <config.h> -#ifndef __FFFRAME_H__ -#define __FFFRAME_H__ +#ifndef __FRAME_H__ +#define __FRAME_H__ -#include <avformat.h> - -class FFFrame { +class Frame {  public: -  FFFrame(); -  ~FFFrame(); -  AVFrame *frame; +  Frame(void *d, int sz); +  ~Frame(); +   +  void *data; +  int size;  }; -#endif/*__FFFRAME_H__*/ +#endif/*__FRAME_H__*/ diff --git a/src/img_encoder.cc b/src/img_encoder.cc index 1a464f8..d83a906 100644 --- a/src/img_encoder.cc +++ b/src/img_encoder.cc @@ -59,7 +59,7 @@ ImgEncoder::~ImgEncoder()    // FIXME: free: deccodec and dcc  } -void ImgEncoder::encode(DVFrame *dvframe,  +void ImgEncoder::encode(Frame *dvframe,                           char *filename,                           int quality)  {  @@ -71,8 +71,8 @@ void ImgEncoder::encode(DVFrame *dvframe,    int got_picture = 1;    int len; -  ptr = (uint8_t *)dvframe->frame; -  len = sizeof(dvframe->frame); +  ptr = (uint8_t *)dvframe->data; +  len = dvframe->size;    ret = avcodec_decode_video(dcc, rawframe, &got_picture, ptr, len); diff --git a/src/img_encoder.h b/src/img_encoder.h index 79f4184..92fe0de 100644 --- a/src/img_encoder.h +++ b/src/img_encoder.h @@ -23,7 +23,7 @@  #ifndef __RTVIDEOREC_IMGENCODER_H  #define __RTVIDEOREC_IMGENCODER_H -#include "dvframe.h" +#include "frame.h"  #include "util.h"  #include <stdio.h> @@ -46,7 +46,7 @@ class ImgEncoder {   public:    ImgEncoder();    ~ImgEncoder(); -  void encode(DVFrame *frame, char* filename, int quality); +  void encode(Frame *frame, char* filename, int quality);    void writeJPEGFile(char *filename,                        int quality,                       JSAMPLE * image_buffer, // Points to large array of R,G,B-order data  diff --git a/src/mov_encoder.cc b/src/mov_encoder.cc index ece1cff..edfafb7 100644 --- a/src/mov_encoder.cc +++ b/src/mov_encoder.cc @@ -166,7 +166,7 @@ MovEncoder::~MovEncoder()    url_fclose(&efc->pb);  } -void MovEncoder::encode(DVFrame *dvframe) +void MovEncoder::encode(Frame *dvframe)  {     int ret;    AVFrame *rawframe = avcodec_alloc_frame();ALLOC(dcc, "mov_encoder, rawframe"); @@ -176,8 +176,8 @@ void MovEncoder::encode(DVFrame *dvframe)    int got_picture = 1;    int len; -  ptr = (uint8_t *)dvframe->frame; -  len = sizeof(dvframe->frame); +  ptr = (uint8_t *)dvframe->data; +  len = dvframe->size;    ret = avcodec_decode_video(dcc,//&dfc->streams[0]->codec,                                rawframe, &got_picture, ptr, len); diff --git a/src/mov_encoder.h b/src/mov_encoder.h index eb67350..ecdb95e 100644 --- a/src/mov_encoder.h +++ b/src/mov_encoder.h @@ -28,7 +28,7 @@  #include <string.h>  #include <avformat.h> -#include <dvframe.h> +#include "frame.h"  #include "util.h" @@ -38,7 +38,7 @@ class MovEncoder {   public:    MovEncoder(const char *filename);    ~MovEncoder(); -  void encode(DVFrame *frame); +  void encode(Frame *frame);   private:    // Decoder diff --git a/src/player.cc b/src/player.cc index dcce6b7..2a08dc1 100644 --- a/src/player.cc +++ b/src/player.cc @@ -25,10 +25,14 @@  #include "player.h" +// Use libdv +#include <libdv/dv.h> +#include <libdv/dv_types.h> +  Player::Player(Error *err,                 volatile int *grunning,                 sem_t	*gsem, -               Queue<FFFrame> *gqueue, +               Queue<Frame> *gqueue,                 pthread_mutex_t *gmutex)  {    // No errors has ocurred... yet! @@ -85,8 +89,11 @@ void Player::player()  {    SDL_Event event;    SDL_Rect rect; -  FFFrame *f; -  AVPicture pict; +  Frame *frame; +  //  AVPicture pict; +	unsigned char pixel_buffer[720 * 576 * 3]; +	int pitches[3]; +    int i;    struct timespec ts; @@ -97,13 +104,21 @@ void Player::player()    rect.y = 0;    rect.w = DISPLAYWIDTH;    rect.h = DISPLAYHEIGHT; - +  /*    //+++++Reference to the overlay pixels/pitches, only after creating a new overlay+++++ +  // ?????????    for(i = 0; i < 3; i++) {      pict.data[i] = overlay->pixels[i];      pict.linesize[i] = overlay->pitches[i];    } -   +  */ + +	dv_decoder_t *decoder = NULL; +	decoder = dv_decoder_new(FALSE, FALSE, FALSE); +	decoder->quality = DV_QUALITY_BEST; +  decoder->clamp_luma = FALSE; +  decoder->clamp_chroma = FALSE; +    while(*running) {      // Wait for the semaphore to be free... then run      sem_wait(&play_sem); @@ -124,18 +139,25 @@ void Player::player()      case SDL_USEREVENT:        pthread_mutex_lock(mutex); -      f = queue->pop(); +      frame = queue->pop();        pthread_mutex_unlock(mutex); -      if(!f) break; +      if(!frame) break; -      img_convert(&pict, PIX_FMT_YUV420P, (AVPicture *)f->frame,  -                  PIX_FMT_YUV420P, DISPLAYWIDTH, DISPLAYHEIGHT); +      //      img_convert(&pict, PIX_FMT_YUV420P, (AVPicture *)f->frame,  +      //                  PIX_FMT_YUV420P, DISPLAYWIDTH, DISPLAYHEIGHT); +      // libdv img decode +			dv_decode_full_frame(decoder,  +                           (const uint8_t*)frame->data,  +                           e_dv_color_yuv,  +                           (uint8_t**)pixel_buffer,  +                           pitches); +        SDL_LockYUVOverlay(overlay);	 -      overlay->pixels = pict.data; +      overlay->pixels = (Uint8**)pixel_buffer;        SDL_UnlockYUVOverlay(overlay);        SDL_DisplayYUVOverlay(overlay, &rect); -      delete f; +      //      delete f;        break;      case SDL_QUIT: @@ -154,9 +176,9 @@ void Player::player()    nanosleep(&ts, NULL);    pthread_mutex_lock(mutex); -  f = queue->pop(); +  frame = queue->pop();    pthread_mutex_unlock(mutex); -  if(f) delete f; +  //  if(f) delete f;  }  void Player::run() diff --git a/src/player.h b/src/player.h index 2af4165..ca2d241 100644 --- a/src/player.h +++ b/src/player.h @@ -34,13 +34,13 @@  #include <pthread.h>  #include <time.h>  #include <SDL/SDL.h> -#include <avformat.h> +//#include <avformat.h>  #include "util.h" -#include <queue.h> +#include "queue.h"  #include "thread.h" -#include "ffframe.h" +#include "frame.h"  #include <qwidget.h> @@ -56,7 +56,7 @@ public:    Player(Error* err,           volatile int *grunning,           sem_t	*gsem, -         Queue<FFFrame> *gqueue, +         Queue<Frame> *gqueue,           pthread_mutex_t *gmutex);    ~Player(); @@ -75,7 +75,7 @@ private:    volatile int *running;    sem_t	*sem; -  Queue<FFFrame> *queue; +  Queue<Frame> *queue;    pthread_mutex_t *mutex;    sem_t	play_sem; diff --git a/src/queue.h b/src/queue.h index 7352071..8851c57 100644 --- a/src/queue.h +++ b/src/queue.h @@ -70,7 +70,7 @@ Queue<T>::~Queue()  {    if(count != 0) {      fprintf(stderr, "Queue not empty (%d)\n", count); -    while(T *t = pop()) delete t; +    while(T *t = pop()) {}//delete t;    }  } @@ -84,7 +84,7 @@ void Queue<T>::push(T *t)    if(limit && count > 0) {      T* tmp = (T*)pop(); -    delete tmp; +    //    delete tmp;    }    if(!head) { diff --git a/src/server.cc b/src/server.cc index 44abe2d..b659fb5 100644 --- a/src/server.cc +++ b/src/server.cc @@ -32,7 +32,7 @@  #include "mov_encoder.h"  #include "img_encoder.h" -void saveFrameAsImage(char* cpr, DVFrame *f) +void saveFrameAsImage(char* cpr, Frame *f)  {    char fname[256];    ImgEncoder imgenc; @@ -78,16 +78,17 @@ void newConnection(Socket *s)  {    n_savestate savestate = LATER;    n_header h; -  DVFrame *f; -  DVFrame *freeze_frame = NULL; +  Frame *f; +  Frame *freeze_frame = NULL;    MovEncoder *enc = NULL; -  f = new DVFrame(); +  // FIXME: Allocate buffer +  f = new Frame(NULL, 0);    printf("New connection[pid: %d]...\n", getpid());    Network n = Network(s); -  while(int ret = n.recvPackage(&h, (void*)f->frame, DVPACKAGE_SIZE)) { +  while(int ret = n.recvPackage(&h, f->data, DVPACKAGE_SIZE)) {      if(ret == -1) {        fprintf(stderr, "An error occurred...!\n");        break; @@ -125,7 +126,8 @@ void newConnection(Socket *s)        delete f;      } -    f = new DVFrame(); +    // FIXME: Allocate buffer +    f = new Frame(NULL, 0);    }    // TODO: Use save state diff --git a/src/server.h b/src/server.h index fd28f33..0aa9a9a 100644 --- a/src/server.h +++ b/src/server.h @@ -35,7 +35,7 @@  #include <time.h> -#include "dvframe.h" +#include "frame.h"  #include "socket.h"  void newConnection(Socket *s); | 
