diff --git a/app/ConfigureFormatDialog.cpp b/app/ConfigureFormatDialog.cpp index e4f5437..d16d6c0 100644 --- a/app/ConfigureFormatDialog.cpp +++ b/app/ConfigureFormatDialog.cpp @@ -174,6 +174,21 @@ ConfigureFormatDialog::ConfigureFormatDialog( QWidget *parent ) : pixelGridLayout->addItem( new QSpacerItem( 10, 10, QSizePolicy::Expanding, QSizePolicy::Minimum ), 1, 1 ); pixelGridLayout->addWidget( m_comboBoxPixelFormat, 1, 2 ); + /* + * Frame rate format + */ + QHBoxLayout* bitsPerPelLayout = new QHBoxLayout(); + QLabel* bitsPerPelLabel = new QLabel(); + bitsPerPelLabel->setFont( menusFont ); + bitsPerPelLabel->setText( "Frame Rate" ); + m_spinBoxBits = new QSpinBox(); + m_spinBoxBits->setMinimumWidth( 30 ); + m_spinBoxBits->setRange( 0, 16 ); + m_spinBoxBits->setValue( 8 ); + bitsPerPelLayout->addWidget( bitsPerPelLabel ); + bitsPerPelLayout->addItem( new QSpacerItem( 20, 10, QSizePolicy::Expanding, QSizePolicy::Minimum ) ); + bitsPerPelLayout->addWidget( m_spinBoxBits ); + /* * Frame rate format */ @@ -204,6 +219,7 @@ ConfigureFormatDialog::ConfigureFormatDialog( QWidget *parent ) : MainLayout->addWidget( resolutionGroup ); MainLayout->addItem( new QSpacerItem( 10, 5, QSizePolicy::Minimum ) ); MainLayout->addWidget( pixelGroup ); + MainLayout->addLayout( bitsPerPelLayout ); MainLayout->addItem( new QSpacerItem( 10, 5, QSizePolicy::Minimum ) ); MainLayout->addLayout( framerateFormatLayout ); MainLayout->addItem( new QSpacerItem( 10, 5, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); @@ -218,7 +234,7 @@ ConfigureFormatDialog::ConfigureFormatDialog( QWidget *parent ) : } -Int ConfigureFormatDialog::runConfigureFormatDialog( QString Filename, UInt& rWidth, UInt& rHeight, Int& rInputFormat, UInt& rFrameRate ) +Int ConfigureFormatDialog::runConfigureFormatDialog( QString Filename, UInt& rWidth, UInt& rHeight, Int& rInputFormat, UInt& rBits, UInt& rFrameRate ) { // Set default values //setWindowTitle( "Configure resolution for " + Filename ); @@ -246,6 +262,7 @@ Int ConfigureFormatDialog::runConfigureFormatDialog( QString Filename, UInt& rWi } m_comboBoxColorSpace->setCurrentIndex( colorSpace ); m_comboBoxPixelFormat->setCurrentIndex( sampling ); + m_spinBoxBits->setValue( rBits ); m_spinBoxFrameRate->setValue( rFrameRate ); for( Int i = 0; i < standardResolutionSizes.size(); i++ ) { @@ -270,6 +287,7 @@ Int ConfigureFormatDialog::runConfigureFormatDialog( QString Filename, UInt& rWi rInputFormat = i; } } + rBits = m_spinBoxBits->value(); rFrameRate = m_spinBoxFrameRate->value(); return QDialog::Accepted; } diff --git a/app/ConfigureFormatDialog.h b/app/ConfigureFormatDialog.h index b1e4a98..b4c3e5d 100644 --- a/app/ConfigureFormatDialog.h +++ b/app/ConfigureFormatDialog.h @@ -34,8 +34,6 @@ #endif #include - - class QPixmap; class QColor; @@ -52,7 +50,7 @@ Q_OBJECT public: ConfigureFormatDialog( QWidget *parent = 0 ); - Int runConfigureFormatDialog ( QString Filename, UInt& rWidth, UInt& rHeight, Int& rInputFormat, UInt& rFrameRate ); + Int runConfigureFormatDialog( QString Filename, UInt& rWidth, UInt& rHeight, Int& rInputFormat, UInt& rBits, UInt& rFrameRate ); private Q_SLOTS: void StandardResolutionSelection(); @@ -68,6 +66,7 @@ private: QSpinBox *m_spinBoxheight; QComboBox *m_comboBoxColorSpace; QComboBox *m_comboBoxPixelFormat; + QSpinBox *m_spinBoxBits; QSpinBox *m_spinBoxFrameRate; }; diff --git a/app/VideoSubWindow.cpp b/app/VideoSubWindow.cpp index 4247a98..839a58e 100644 --- a/app/VideoSubWindow.cpp +++ b/app/VideoSubWindow.cpp @@ -44,6 +44,7 @@ QDataStream& operator<<( QDataStream& out, const PlaYUVerStreamInfoVector& array << d.m_uiHeight << d.m_iPelFormat << d.m_uiFrameRate + << d.m_uiBitsPelPixel << d.m_uiFileSize; } return out; @@ -60,6 +61,7 @@ QDataStream& operator>>( QDataStream& in, PlaYUVerStreamInfoVector& array ) in >> d.m_uiWidth; in >> d.m_uiHeight; in >> d.m_iPelFormat; + in >> d.m_uiBitsPelPixel; in >> d.m_uiFrameRate; in >> d.m_uiFileSize; array.append( d ); @@ -141,16 +143,16 @@ Void VideoSubWindow::refreshSubWindow() Bool VideoSubWindow::loadFile( QString cFilename, Bool bForceDialog ) { - UInt Width = 0, Height = 0, FrameRate = 30; + UInt Width = 0, Height = 0, BitsPel = 8, FrameRate = 30; Int InputFormat = PlaYUVerFrame::YUV420p; if( m_pCurrStream ) - m_pCurrStream->getFormat( Width, Height, InputFormat, FrameRate ); + m_pCurrStream->getFormat( Width, Height, InputFormat, BitsPel, FrameRate ); if( guessFormat( cFilename, Width, Height, InputFormat, FrameRate ) || bForceDialog ) { ConfigureFormatDialog formatDialog( this ); - if( formatDialog.runConfigureFormatDialog( QFileInfo( cFilename ).fileName(), Width, Height, InputFormat, FrameRate ) == QDialog::Rejected ) + if( formatDialog.runConfigureFormatDialog( QFileInfo( cFilename ).fileName(), Width, Height, InputFormat, BitsPel, FrameRate ) == QDialog::Rejected ) { return false; } @@ -166,12 +168,13 @@ Bool VideoSubWindow::loadFile( QString cFilename, Bool bForceDialog ) m_pCurrStream = new PlaYUVerStream; } - m_pCurrStream->open( cFilename.toStdString(), Width, Height, InputFormat, FrameRate ); + m_pCurrStream->open( cFilename.toStdString(), Width, Height, InputFormat, BitsPel, FrameRate ); m_sStreamInfo.m_cFilename = cFilename; m_sStreamInfo.m_uiWidth = Width; m_sStreamInfo.m_uiHeight = Height; m_sStreamInfo.m_iPelFormat = InputFormat; + m_sStreamInfo.m_uiBitsPelPixel = BitsPel; m_sStreamInfo.m_uiFrameRate = FrameRate; m_sStreamInfo.m_uiFileSize = QFileInfo( cFilename ).size(); @@ -198,7 +201,7 @@ Bool VideoSubWindow::loadFile( PlaYUVerStreamInfo* streamInfo ) } if( !m_pCurrStream->open( streamInfo->m_cFilename.toStdString(), streamInfo->m_uiWidth, streamInfo->m_uiHeight, streamInfo->m_iPelFormat, - streamInfo->m_uiFrameRate ) ) + streamInfo->m_uiBitsPelPixel, streamInfo->m_uiFrameRate ) ) { return false; } @@ -317,7 +320,7 @@ Bool VideoSubWindow::guessFormat( QString filename, UInt& rWidth, UInt& rHeight, Int count = 0, module, frame_bytes, match; for( UInt i = 0; i < stdResList.size(); i++ ) { - frame_bytes = PlaYUVerFrame::getBytesPerFrame( stdResList[i].uiWidth, stdResList[i].uiHeight, rInputFormat ); + frame_bytes = PlaYUVerFrame::getBytesPerFrame( stdResList[i].uiWidth, stdResList[i].uiHeight, rInputFormat, 8 ); module = uiFileSize % frame_bytes; if( module == 0 ) { diff --git a/app/VideoSubWindow.h b/app/VideoSubWindow.h index c5ac156..d714614 100644 --- a/app/VideoSubWindow.h +++ b/app/VideoSubWindow.h @@ -49,6 +49,7 @@ typedef struct UInt m_uiWidth; UInt m_uiHeight; Int m_iPelFormat; + UInt m_uiBitsPelPixel; UInt m_uiFrameRate; UInt64 m_uiFileSize; } PlaYUVerStreamInfo; diff --git a/lib/PlaYUVerDefs.h b/lib/PlaYUVerDefs.h index fa07c3e..e60b894 100644 --- a/lib/PlaYUVerDefs.h +++ b/lib/PlaYUVerDefs.h @@ -76,6 +76,7 @@ typedef unsigned long long UInt64; // ==================================================================================================================== typedef UChar Pel; ///< 8-bit pixel type +typedef UChar SBytePel; ///< 8-bit pixel type //typedef Short Pel; ///< 16-bit pixel type // ==================================================================================================================== diff --git a/lib/PlaYUVerFrame.cpp b/lib/PlaYUVerFrame.cpp index 513fe45..82bb1bf 100644 --- a/lib/PlaYUVerFrame.cpp +++ b/lib/PlaYUVerFrame.cpp @@ -99,14 +99,14 @@ PlaYUVerFrame::Pixel PlaYUVerFrame::ConvertPixel( Pixel inputPixel, ColorSpace e return outPixel; } -PlaYUVerFrame::PlaYUVerFrame( UInt width, UInt height, Int pel_format ) +PlaYUVerFrame::PlaYUVerFrame( UInt width, UInt height, Int pelFormat, Int bitsPixel ) { - init( width, height, pel_format ); + init( width, height, pelFormat, bitsPixel ); } PlaYUVerFrame::PlaYUVerFrame( PlaYUVerFrame *other ) { - init( other->getWidth(), other->getHeight(), other->getPelFormat() ); + init( other->getWidth(), other->getHeight(), other->getPelFormat(), other->getBitsPel() ); copyFrom( other ); } @@ -130,7 +130,7 @@ PlaYUVerFrame::PlaYUVerFrame( PlaYUVerFrame *other, UInt posX, UInt posY, UInt a areaHeight++; } - init( areaWidth, areaHeight, other->getPelFormat() ); + init( areaWidth, areaHeight, other->getPelFormat(), other->getBitsPel() ); copyFrom( other, posX, posY ); } @@ -145,16 +145,16 @@ PlaYUVerFrame::~PlaYUVerFrame() closePixfc(); } -static Int getMem3ImageComponents( Pel**** array3D, Int dim1, Int dim2, Int log2ChromaHeight, Int log2ChromaWidth ) +static Int getMem3ImageComponents( SBytePel**** array3D, Int dim1, Int dim2, Int log2ChromaHeight, Int log2ChromaWidth ) { Int dim0 = 3; Int i; UInt64 total_mem_size = 0; UInt64 mem_size = ( dim1 * dim2 + CHROMASHIFT( dim1, log2ChromaHeight ) * CHROMASHIFT( dim2, log2ChromaWidth ) * 2 ); - total_mem_size += getMem2D( array3D, dim0, dim1 ); + total_mem_size += getMem2D( array3D, dim0, dim1 ); - if( ( ( *array3D )[0][0] = ( Pel* )xCallocMem( mem_size, sizeof(Pel) ) ) == NULL ) + if( ( ( *array3D )[0][0] = ( SBytePel* )xCallocMem( mem_size, sizeof(Pel) ) ) == NULL ) printf( "getMem3DImageComponents: array1D" ); total_mem_size += mem_size * sizeof(Pel); @@ -179,7 +179,7 @@ static Int getMem3ImageComponents( Pel**** array3D, Int dim1, Int dim2, Int log2 return total_mem_size; } -Void PlaYUVerFrame::init( UInt width, UInt height, Int pel_format ) +Void PlaYUVerFrame::init( UInt width, UInt height, Int pel_format, Int bitsPixel ) { m_pppcInputPel = NULL; m_pcARGB32 = NULL; @@ -187,13 +187,11 @@ Void PlaYUVerFrame::init( UInt width, UInt height, Int pel_format ) m_uiHeight = height; m_iPixelFormat = pel_format; m_iNumberChannels = 3; - m_iBitsChannels = 8; + m_iBitsPel = bitsPixel; - Int max_bits_per_pel = sizeof(Pel) * 8; - - if( m_uiWidth == 0 || m_uiHeight == 0 || m_iPixelFormat == -1 || m_iBitsChannels > max_bits_per_pel ) + if( m_uiWidth == 0 || m_uiHeight == 0 || m_iPixelFormat == -1 || bitsPixel > 16 ) { - return; + throw "Cannot create a PlYUVerFrame of this type"; } m_pcPelFormat = &( g_PlaYUVerPixFmtDescriptorsList[pel_format] ); @@ -225,19 +223,20 @@ UInt PlaYUVerFrame::getNumberChannels() const UInt64 PlaYUVerFrame::getBytesPerFrame() { - return getBytesPerFrame( m_uiWidth, m_uiHeight, m_iPixelFormat ); + return getBytesPerFrame( m_uiWidth, m_uiHeight, m_iPixelFormat, m_iBitsPel ); } -UInt64 PlaYUVerFrame::getBytesPerFrame( UInt uiWidth, UInt uiHeight, Int iPixelFormat ) +UInt64 PlaYUVerFrame::getBytesPerFrame( UInt uiWidth, UInt uiHeight, Int iPixelFormat, Int bitsPixel ) { PlaYUVerPixFmtDescriptor* pcPelFormat = &( g_PlaYUVerPixFmtDescriptorsList[iPixelFormat] ); + UInt bytesPerPixel = bitsPixel / 8; UInt64 numberBytes = uiWidth * uiHeight; if( pcPelFormat->numberChannels > 1 ) { UInt64 numberBytesChroma = CHROMASHIFT( uiWidth, pcPelFormat->log2ChromaWidth ) * CHROMASHIFT( uiHeight, pcPelFormat->log2ChromaHeight ); numberBytes += ( pcPelFormat->numberChannels - 1 ) * numberBytesChroma; } - return numberBytes; + return numberBytes * bytesPerPixel; } UInt PlaYUVerFrame::getChromaWidth() const @@ -501,7 +500,7 @@ Void PlaYUVerFrame::fromCvMat( Void* voidFrame ) if( !isValid() ) { - init( opencvFrame->cols, opencvFrame->rows, m_iPixelFormat ); + init( opencvFrame->cols, opencvFrame->rows, m_iPixelFormat, 8 ); } m_bHasRGBPel = false; diff --git a/lib/PlaYUVerFrame.h b/lib/PlaYUVerFrame.h index 271da41..965f963 100644 --- a/lib/PlaYUVerFrame.h +++ b/lib/PlaYUVerFrame.h @@ -158,7 +158,7 @@ public: * pixel format * @return number of bytes per frame */ - static UInt64 getBytesPerFrame( UInt, UInt, Int ); + static UInt64 getBytesPerFrame( UInt uiWidth, UInt uiHeight, Int iPixelFormat, Int bitsPixel ); /** * Convert a Pixel to a new color space @@ -177,7 +177,7 @@ public: * * @note this function might misbehave if the pixel format enum is not correct */ - PlaYUVerFrame( UInt width, UInt height, Int pel_format = 0 ); + PlaYUVerFrame( UInt width, UInt height, Int pelFormat = 0, Int bitsPixel = 8 ); /** * Creates and new frame with the configuration of an @@ -236,9 +236,9 @@ public: { return m_iPixelFormat; } - Int getBitsChannel() const + Int getBitsPel() const { - return m_iBitsChannels; + return m_iBitsPel; } Bool isValid() const { @@ -334,7 +334,7 @@ private: UInt m_uiHeight; //!< Height of the frame Int m_iPixelFormat; //!< Pixel format number (it follows the list of supported pixel formats) Int m_iNumberChannels; //!< Number of channels - Int m_iBitsChannels; //!< Bits per pixel/channel + Int m_iBitsPel; //!< Bits per pixel/channel Pel*** m_pppcInputPel; @@ -349,7 +349,7 @@ private: * @param pel_format pixel format index (always use PixelFormats enum) * */ - Void init( UInt width, UInt height, Int pel_format ); + Void init( UInt width, UInt height, Int pel_format, Int bitsPixel ); Void openPixfc(); Void closePixfc(); diff --git a/lib/PlaYUVerFrameStats.cpp b/lib/PlaYUVerFrameStats.cpp index 8337fe2..4b33e22 100644 --- a/lib/PlaYUVerFrameStats.cpp +++ b/lib/PlaYUVerFrameStats.cpp @@ -56,7 +56,7 @@ Void PlaYUVerFrameStats::xSetupStatistics( const PlaYUVerFrame *pcFrame, UInt op m_uiImageHeight = pcFrame->getHeight(); m_uiChannels = pcFrame->getNumberChannels(); - m_uiHistoSegments = ( pcFrame->getBitsChannel() == 16 ) ? 65536 : 256; + m_uiHistoSegments = 1 << pcFrame->getBitsPel(); imageColorSpace = pcFrame->getColorSpace(); imageChromaSize = pcFrame->getChromaLength(); diff --git a/lib/PlaYUVerStream.cpp b/lib/PlaYUVerStream.cpp index 4b5b85f..6f58a5d 100644 --- a/lib/PlaYUVerStream.cpp +++ b/lib/PlaYUVerStream.cpp @@ -163,7 +163,7 @@ PlaYUVerStream::~PlaYUVerStream() close(); } -Bool PlaYUVerStream::open( std::string filename, std::string resolution, std::string input_format_name, UInt frame_rate, Bool bInput ) +Bool PlaYUVerStream::open( std::string filename, std::string resolution, std::string input_format_name, UInt bitsPel, UInt frame_rate, Bool bInput ) { UInt width; UInt height; @@ -185,10 +185,10 @@ Bool PlaYUVerStream::open( std::string filename, std::string resolution, std::st break; } } - return open( filename, width, height, input_format, frame_rate, bInput ); + return open( filename, width, height, input_format, bitsPel, frame_rate, bInput ); } -Bool PlaYUVerStream::open( std::string filename, UInt width, UInt height, Int input_format, UInt frame_rate, Bool bInput ) +Bool PlaYUVerStream::open( std::string filename, UInt width, UInt height, Int input_format, UInt bitsPel, UInt frame_rate, Bool bInput ) { if( m_bInit ) { @@ -200,6 +200,7 @@ Bool PlaYUVerStream::open( std::string filename, UInt width, UInt height, Int in m_uiWidth = width; m_uiHeight = height; m_iPixelFormat = input_format; + m_uiBitsPerPixel = bitsPel; m_dFrameRate = frame_rate; m_pchFilename = new Char[m_cFilename.size() + 1]; @@ -254,6 +255,10 @@ Bool PlaYUVerStream::open( std::string filename, UInt width, UInt height, Int in } } #endif + if( m_uiBitsPerPixel != 8 ) + { + m_uiStreamHandler = YUV_IO; + } m_uiFrameBufferSize = 2; } else @@ -311,8 +316,11 @@ Bool PlaYUVerStream::open( std::string filename, UInt width, UInt height, Int in getMem1D( &m_ppcFrameBuffer, m_uiFrameBufferSize ); for( UInt i = 0; i < m_uiFrameBufferSize; i++ ) { - m_ppcFrameBuffer[i] = new PlaYUVerFrame( m_uiWidth, m_uiHeight, m_iPixelFormat ); - if( !m_ppcFrameBuffer[i] ) + try + { + m_ppcFrameBuffer[i] = new PlaYUVerFrame( m_uiWidth, m_uiHeight, m_iPixelFormat, m_uiBitsPerPixel ); + } + catch( const char *msg ) { close(); throw "[PlaYUVerStream] Cannot allocated frame buffer"; @@ -384,7 +392,7 @@ Bool PlaYUVerStream::openFile() { return false; } - if ( m_bIsInput ) + if( m_bIsInput ) { fseek( m_pFile, m_iCurrFrameNum >= 0 ? m_iCurrFrameNum : 0, SEEK_SET ); } @@ -433,13 +441,14 @@ Void PlaYUVerStream::close() m_bInit = false; } -Void PlaYUVerStream::getFormat( UInt& rWidth, UInt& rHeight, Int& rInputFormat, UInt& rFrameRate ) +Void PlaYUVerStream::getFormat( UInt& rWidth, UInt& rHeight, Int& rInputFormat, UInt& rBitsPerPel, UInt& rFrameRate ) { if( m_bInit ) { rWidth = m_uiWidth; rHeight = m_uiHeight; rInputFormat = m_iPixelFormat; + rBitsPerPel = m_uiBitsPerPixel; rFrameRate = m_dFrameRate; } else @@ -447,6 +456,7 @@ Void PlaYUVerStream::getFormat( UInt& rWidth, UInt& rHeight, Int& rInputFormat, rWidth = 0; rHeight = 0; rInputFormat = PlaYUVerFrame::YUV420p; + rBitsPerPel = 8; rFrameRate = 30; } } @@ -471,7 +481,7 @@ Void PlaYUVerStream::loadAll() getMem1D( &m_ppcFrameBuffer, m_uiFrameBufferSize ); for( UInt i = 0; i < m_uiFrameBufferSize; i++ ) { - m_ppcFrameBuffer[i] = new PlaYUVerFrame( m_uiWidth, m_uiHeight, m_iPixelFormat ); + m_ppcFrameBuffer[i] = new PlaYUVerFrame( m_uiWidth, m_uiHeight, m_iPixelFormat, m_uiBitsPerPixel ); if( !m_ppcFrameBuffer[i] ) { close(); diff --git a/lib/PlaYUVerStream.h b/lib/PlaYUVerStream.h index a9429ab..ee31ec7 100644 --- a/lib/PlaYUVerStream.h +++ b/lib/PlaYUVerStream.h @@ -82,6 +82,7 @@ private: Int m_iFileFormat; Int m_iPixelFormat; + UInt m_uiBitsPerPixel; Pel* m_pStreamBuffer; @@ -121,14 +122,14 @@ public: END_OF_SEQ, }; - Bool open( std::string filename, std::string resolution, std::string input_format, UInt frame_rate, Bool bInput = true ); - Bool open( std::string filename, UInt width, UInt height, Int input_format, UInt frame_rate, Bool bInput = true ); + Bool open( std::string filename, std::string resolution, std::string input_format, UInt bitsPel, UInt frame_rate, Bool bInput = true ); + Bool open( std::string filename, UInt width, UInt height, Int input_format, UInt bitsPel, UInt frame_rate, Bool bInput = true ); Void close(); Bool openFile(); Void closeFile(); - Void getFormat( UInt& rWidth, UInt& rHeight, Int& rInputFormat, UInt& rFrameRate ); + Void getFormat( UInt& rWidth, UInt& rHeight, Int& rInputFormat, UInt& rBitsPerPel, UInt& rFrameRate ); Void loadAll(); diff --git a/tools/PlaYUVerTools.cpp b/tools/PlaYUVerTools.cpp index 2da3fbf..07a8f3b 100644 --- a/tools/PlaYUVerTools.cpp +++ b/tools/PlaYUVerTools.cpp @@ -79,7 +79,7 @@ Int PlaYUVerTools::openInputs() pcStream = new PlaYUVerStream; try { - if( !pcStream->open( inputFileNames[i], resolutionString, fmtString, 1 ) ) + if( !pcStream->open( inputFileNames[i], resolutionString, fmtString, 8, 1 ) ) { m_cCmdLineHandler.log( CommandLineHandle::ERROR, "Cannot open input stream %s! ", inputFileNames[i].c_str() ); return 2; @@ -132,11 +132,11 @@ Int PlaYUVerTools::Open( Int argc, Char *argv[] ) if( m_cCmdLineHandler.Opts()["quality"]->count() ) { std::string qualityMetric = m_cCmdLineHandler.m_strQualityMetric; - if( m_apcInputStreams.size() != 2 ) - { - m_cCmdLineHandler.log( CommandLineHandle::ERROR, "Invalid number of inputs! " ); - return 2; - } +// if( m_apcInputStreams.size() != 2 ) +// { +// m_cCmdLineHandler.log( CommandLineHandle::ERROR, "Invalid number of inputs! " ); +// return 2; +// } for( UInt i = 0; i < PlaYUVerFrame::supportedQualityMetricsList().size(); i++ ) { if( lowercase( PlaYUVerFrame::supportedQualityMetricsList()[i] ) == lowercase( qualityMetric ) ) @@ -193,7 +193,7 @@ Int PlaYUVerTools::Open( Int argc, Char *argv[] ) { PlaYUVerFrame* pcModFrame = applyFrameModule(); PlaYUVerStream* pcModStream = new PlaYUVerStream; - if( !pcModStream->open( outputFileNames[0], pcModFrame->getWidth(), pcModFrame->getHeight(), pcModFrame->getPelFormat(), 1, false ) ) + if( !pcModStream->open( outputFileNames[0], pcModFrame->getWidth(), pcModFrame->getHeight(), pcModFrame->getPelFormat(), 8, 1, false ) ) { delete pcModStream; pcModStream = NULL;