Changeset 34

Show
Ignore:
Timestamp:
02/15/08 01:47:55 (7 months ago)
Author:
sip
Message:

Asymmetric mosaics and logo implemented [Code contributed by Vincenzo Terracciano].

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • media/Makefile

    r31 r34  
    3838GSMOBJ=gsmcodec.o 
    3939 
    40 OBJS=mcu.o multiconf.o participant.o videomixer.o audiomixer.o xmlrpcserver.o xmlhandler.o statushandler.o xmlrpcmcu.o  tools.o rtpsession.o audiostream.o videostream.o pipeaudioinput.o pipeaudiooutput.o pipevideoinput.o pipevideooutput.o framescaler.o mosaic.o partedmosaic.o 
     40OBJS=mcu.o multiconf.o participant.o videomixer.o audiomixer.o xmlrpcserver.o xmlhandler.o statushandler.o xmlrpcmcu.o  tools.o rtpsession.o audiostream.o videostream.o pipeaudioinput.o pipeaudiooutput.o pipevideoinput.o pipevideooutput.o framescaler.o mosaic.o partedmosaic.o asymmetricmosaic.o logo.o 
    4141OBJS+= $(G711OBJ) $(H263OBJ) $(GSMOBJ)  
    4242TARGETS=mcu mcuclient test 
     
    7070 
    7171INCLUDE+= -I$(SRCDIR)/media/include/ -I$(SRCDIR)/xmlrpc/include -I$(SRCDIR)/xmlrpc/lib/abyss/src $(GNASHINCLUDE) 
    72 LDFLAGS+= -lavcodec -lgsm -lpthread -lswscale 
     72LDFLAGS+= -lavcodec -lgsm -lpthread -lswscale -lavformat 
    7373LDXMLFLAGS+= -lxmlrpc -lxmlrpc_xmlparse -lxmlrpc_xmltok -lxmlrpc_abyss -lxmlrpc_server -L$(SRCDIR)/xmlrpc/lib  
    7474LDFLAGS+= $(LDXMLFLAGS) 
  • media/include/videomixer.h

    r31 r34  
    77#include "pipevideooutput.h" 
    88#include "mosaic.h" 
     9#include "logo.h" 
    910#include <map> 
    1011using namespace std; 
     
    1415        mosaic1x1 = 0,  
    1516        mosaic2x2 = 1, 
    16         mosaic3x3 = 2 
     17        mosaic3x3 = 2, 
     18        mosaic3p4 = 4, 
     19        mosaic1p7 = 5, 
     20        mosaic1p5 = 6 
    1721} CompositionType; 
    1822 
     
    6165        //Las propiedades del mosaico 
    6266        CompositionType compositionType; 
    63         BYTE   *logo; 
     67        Logo   logo; 
    6468        Mosaic  *mosaic; 
    6569        int     *mosaicSlots; 
  • media/src/videomixer.cpp

    r31 r34  
    44#include <pipevideooutput.h> 
    55#include <partedmosaic.h> 
     6#include <asymmetricmosaic.h> 
    67 
    78/*********************** 
     
    154155 
    155156        //Allocamos para el logo 
    156         //logo = (BYTE *) malloc(logoSize); 
    157  
    158         //Lo obtenemos 
    159         //WindowManager::DisplayLogo(logo,mosaicWidth,mosaicHeight); 
    160  
    161         //Ponemos el logito 
    162         //for (int i=0;i<mosaicNum;i++) 
    163                 //UpdatePosition(i,logo,mosaicWidth,mosaicHeight); 
     157        logo.Load("logo.png"); 
    164158 
    165159        // Estamos mzclando 
     
    386380                                //was fixed? 
    387381                                if (mosaicSlots[i]==id) 
     382                                { 
    388383                                        //lock it 
    389384                                        mosaicSlots[i]=-1; 
    390                                 else  
     385                                        //Print logo 
     386                                        mosaic->Update(i,logo.GetFrame(),logo.GetWidth(),logo.GetHeight()); 
     387                                } else { 
    391388                                        //Recalculate participant positions 
    392389                                        CalculatePositions(); 
     390                                } 
    393391                                 
    394392                                //Finish 
     
    472470*       Pone el modo de mosaico 
    473471***************************/ 
    474 int VideoMixer::SetCompositionType(CompositionType comp, int type) 
    475 { 
    476         Log(">SetCompositionType [%d,%d]\n",comp,type); 
     472int VideoMixer::SetCompositionType(CompositionType comp, int size) 
     473{ 
     474        Log(">SetCompositionType [%d,%d]\n",comp,size); 
    477475 
    478476        //Protegemos la lista 
     
    489487                case mosaic1x1: 
    490488                        //Set mosaic 
    491                         mosaic = new PartedMosaic(1,type); 
     489                        mosaic = new PartedMosaic(1,size); 
    492490                        break; 
    493491                case mosaic2x2: 
    494492                        //Set mosaic 
    495                         mosaic = new PartedMosaic(2,type); 
     493                        mosaic = new PartedMosaic(2,size); 
    496494                        break; 
    497495                case mosaic3x3: 
    498496                        //Set mosaic 
    499                         mosaic = new PartedMosaic(3,type); 
     497                        mosaic = new PartedMosaic(3,size); 
     498                        break; 
     499                case mosaic3p4: 
     500                case mosaic1p7: 
     501                case mosaic1p5: 
     502                        //Set mosaic 
     503                        mosaic = new AsymmetricMosaic((int)comp,size); 
    500504                        break; 
    501505                default: 
     
    565569 
    566570        Log(">CalculatePositions\n"); 
    567  
     571         
    568572        //First erase positions 
    569573        memset(mosaicPos,0,numSlots*sizeof(int)); 
     
    572576        int first = 0; 
    573577 
    574  
    575578        //Iterate Videos 
    576579        for (it=lstVideos.begin(); it!=lstVideos.end(); ++it) 
     
    578581                //Get id 
    579582                int id = (*it).first; 
     583                //Get output 
     584                PipeVideoOutput *output = (*it).second->output; 
    580585 
    581586                //Not found the first free one 
     
    590595                                //Set our position 
    591596                                mosaicPos[i]=id; 
     597                                //Update slot 
     598                                mosaic->Update(i,output->GetFrame(),output->GetWidth(),output->GetHeight()); 
    592599                                //If we were the first one 
    593600                                if (first==i) 
     
    614621                        //Here we are 
    615622                        mosaicPos[firstFree]=id; 
     623                        //Update slot 
     624                        mosaic->Update(firstFree,output->GetFrame(),output->GetWidth(),output->GetHeight()); 
    616625                        //If we were the first one 
    617626                        if (first==firstFree) 
     
    625634                        break; 
    626635        }        
     636 
     637        //For each slot 
     638        for (int i=0;i<numSlots;i++) 
     639                //If we empty slot 
     640                if (mosaicPos[i]<=0) 
     641                        //Print it 
     642                        mosaic->Update(i,logo.GetFrame(),logo.GetWidth(),logo.GetHeight()); 
    627643 
    628644        //Log Slots 
Copyright 2006 - Sergio García Murillo
Powered by Trac - Edgewall Software