Home » Source Code » Mp4v2 official open source library » ColorParameterBox.cpp

ColorParameterBox.cpp ( File view )

  • By 飞狼love6 2015-08-24
  • View(s):5
  • Download(s):1
  • Point(s): 1
			///////////////////////////////////////////////////////////////////////////////
//
//  The contents of this file are subject to the Mozilla Public License
//  Version 1.1 (the "License"); you may not use this file except in
//  compliance with the License. You may obtain a copy of the License at
//  http://www.mozilla.org/MPL/
//
//  Software distributed under the License is distributed on an "AS IS"
//  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
//  License for the specific language governing rights and limitations
//  under the License.
// 
//  The Original Code is MP4v2.
// 
//  The Initial Developer of the Original Code is Kona Blend.
//  Portions created by Kona Blend are Copyright (C) 2008.
//  All Rights Reserved.
//
//  Contributors:
//      Kona Blend, kona8lend@@gmail.com
//
///////////////////////////////////////////////////////////////////////////////

#include "impl.h"

namespace mp4v2 {
 namespace impl {
 namespace qtff {


///////////////////////////////////////////////////////////////////////////////

namespace {

    const string BOX_CODE = "colr";

    bool findColorParameterBox( MP4FileHandle file, MP4Atom& coding, MP4Atom*& colr );

}

///////////////////////////////////////////////////////////////////////////////

bool
ColorParameterBox::add( MP4FileHandle file, uint16_t trackIndex, const Item& item )
{

    MP4Atom* coding;

    if( !MP4_IS_VALID_FILE_HANDLE( file ))
        throw new Exception( "invalid file handle", __FILE__, __LINE__, __FUNCTION__ );

    if( findCoding( file, trackIndex, coding ))
        throw new Exception( "supported coding not found", __FILE__, __LINE__, __FUNCTION__ );

    MP4Atom* colr;
    if( !findColorParameterBox( file, *coding, colr ))
        throw new Exception( "colr-box already exists", __FILE__, __LINE__, __FUNCTION__ );

    colr = MP4Atom::CreateAtom( *((MP4File *)file), coding, BOX_CODE.c_str() );
    coding->AddChildAtom( colr );
    colr->Generate();

    MP4StringProperty*    type;
    MP4Integer16Property* primariesIndex;
    MP4Integer16Property* transferFunctionIndex;
    MP4Integer16Property* matrixIndex;

    if( colr->FindProperty( "colr.colorParameterType", (MP4Property**)&type ))
        type->SetValue( "nclc" );

    if( colr->FindProperty( "colr.primariesIndex", (MP4Property**)&primariesIndex ))
        primariesIndex->SetValue( item.primariesIndex );

    if( colr->FindProperty( "colr.transferFunctionIndex", (MP4Property**)&transferFunctionIndex ))
        transferFunctionIndex->SetValue( item.transferFunctionIndex );

    if( colr->FindProperty( "colr.matrixIndex", (MP4Property**)&matrixIndex ))
        matrixIndex->SetValue( item.matrixIndex );

    return false;

}

///////////////////////////////////////////////////////////////////////////////

bool
ColorParameterBox::add( MP4FileHandle file, MP4TrackId trackId, const Item& item )
{

    MP4File& mp4 = *((MP4File*)file);
    return add( file, mp4.FindTrackIndex( trackId ), item );

}

///////////////////////////////////////////////////////////////////////////////

bool
ColorParameterBox::get( MP4FileHandle file, uint16_t trackIndex, Item& item )
{

    item.reset();

    MP4Atom* coding;
    if( findCoding( file, trackIndex, coding ))
        throw new Exception( "supported coding not found", __FILE__, __LINE__, __FUNCTION__ );

    MP4Atom* colr;
    if( findColorParameterBox( file, *coding, colr ))
        throw new Exception( "colr-box not found", __FILE__, __LINE__, __FUNCTION__ );

    MP4Integer16Property* primariesIndex;
    MP4Integer16Property* transferFunctionIndex;
    MP4Integer16Property* matrixIndex;

    if( colr->FindProperty( "colr.primariesIndex", (MP4Property**)&primariesIndex ))
        item.primariesIndex = primariesIndex->GetValue();

    if( colr->FindProperty( "colr.transferFunctionIndex", (MP4Property**)&transferFunctionIndex ))
        item.transferFunctionIndex = transferFunctionIndex->GetValue();

    if( colr->FindProperty( "colr.matrixIndex", (MP4Property**)&matrixIndex ))
        item.matrixIndex = matrixIndex->GetValue();

    return false;

}

///////////////////////////////////////////////////////////////////////////////

bool
ColorParameterBox::get( MP4FileHandle file, MP4TrackId trackId, Item& item )
{

    MP4File& mp4 = *((MP4File*)file);
    return get( file, mp4.FindTrackIndex( trackId ), item );

}

///////////////////////////////////////////////////////////////////////////////

bool
ColorParameterBox::list( MP4FileHandle file, ItemList& itemList )
{

    itemList.clear();
    MP4File& mp4 = *((MP4File*)file);

    const uint16_t trackc = mp4.GetNumberOfTracks();
    for( uint16_t i = 0; i < trackc; i++) {

        MP4TrackId id = mp4.FindTrackId( i );
        if( id == MP4_INVALID_TRACK_ID )
            continue;

        const char* type = mp4.GetTrackType( id );
        if( !type )
            continue;

        itemList.resize( itemList.size() + 1 );
        IndexedItem& xitem = itemList[itemList.size()-1];

        xitem.trackIndex = i;
        xitem.trackId    = id;

        bool success = false;
        try {

            success = !get( file, i, xitem.item );
        
}
        catch( Exception* x ) {

            delete x;
        
}

        if( !success ) {

            itemList.resize( itemList.size() - 1 );
            continue;
        
}
    
}

    return false;

}

///////////////////////////////////////////////////////////////////////////////

bool
ColorParameterBox::remove( MP4FileHandle file, uint16_t trackIndex )
{

    MP4Atom* coding;
    if( findCoding( file, trackIndex, coding ))
        throw new Exception( "supported coding not found", __FILE__, __LINE__, __FUNCTION__ );

    MP4Atom* colr;
    if( findColorParameterBox( file, *coding, colr ))
        throw new Exception( "colr-box not found", __FILE__, __LINE__, __FUNCTION__ );

    coding->DeleteChildAtom( colr );
    delete colr;

    return false;

}

///////////////////////////////////////////////////////////////////////////////

bool
ColorParameterBox::remove( MP4FileHandle file, MP4TrackId trackId )
{

    MP4File& mp4 = *((MP4File*)file);
    return remove( file, mp4.FindTrackIndex( trackId ));

}

///////////////////////////////////////////////////////////////////////////////

bool
ColorParameterBox::set( MP4FileHandle file, uint16_t trackIndex, const Item& item )
{

    MP4Atom* coding;
    if( findCoding( file, trackIndex, coding ))
        throw new Exception( "supported coding not found", __FILE__, __LINE__, __FUNCTION__ );

    MP4Atom* colr;
    if( findColorParameterBox( file, *coding, colr ))
        throw new Exception( "colr-box not found", __FILE__, __LINE__, __FUNCTION__ );

    MP4Integer16Property* primariesIndex;
    MP4Integer16Property* transferFunctionIndex;
    MP4Integer16Property* matrixIndex;

    if( colr->FindProperty( "colr.primariesIndex", (MP4Property**)&primariesIndex ))
        primariesIndex->SetValue( item.primariesIndex );

    if( colr->FindProperty( "colr.transferFunctionIndex", (MP4Property**)&transferFunctionIndex ))
        transferFunctionIndex->SetValue( item.transferFunctionIndex );

    if( colr->FindProperty( "colr.matrixIndex", (MP4Property**)&matrixIndex ))
        matrixIndex->SetValue( item.matrixIndex );

    return false;

}

///////////////////////////////////////////////////////////////////////////////

bool
ColorParameterBox::set( MP4FileHandle file, MP4TrackId trackId, const Item& item )
{

    MP4File& mp4 = *((MP4File*)file);
    return set( file, mp4.FindTrackIndex( trackId ), item );

}

///////////////////////////////////////////////////////////////////////////////

ColorParameterBox::IndexedItem::IndexedItem()
    : trackIndex ( numeric_limits<uint16_t>::max() )
    , trackId    ( MP4_INVALID_TRACK_ID )
{


}

///////////////////////////////////////////////////////////////////////////////

ColorParameterBox::Item::Item()
    : primariesIndex        ( 6 )
    , transferFunctionIndex ( 1 )
    , matrixIndex           ( 6 )
{


}

///////////////////////////////////////////////////////////////////////////////

void
ColorParameterBox::Item::convertFromCSV( const string& text )
{

    istringstream iss( text );
    char delim;

    iss >> primariesIndex;
    iss >> delim;
    iss >> transferFunctionIndex;
    iss >> delim;
    iss >> matrixIndex;

    // input was good if we end up with only eofbit set
    if( iss.rdstate() != ios::eofbit ) {

        reset();
        ostringstream xss;
        xss << "invalid ColorParameterBox format"
            << " (expecting: INDEX1,INDEX2,INDEX3)"
            << " got: " << text;
        throw new Exception( xss.str(), __FILE__, __LINE__, __FUNCTION__ );
    
}

}

///////////////////////////////////////////////////////////////////////////////

string
ColorParameterBox::Item::convertToCSV() const
{

    string buffer;
    return convertToCSV( buffer );

}

///////////////////////////////////////////////////////////////////////////////

string&
ColorParameterBox::Item::convertToCSV( string& buffer ) const
{

    ostringstream oss;
    oss << primariesIndex << ',' << transferFunctionIndex << ',' << matrixIndex;
    buffer = oss.str();
    return buffer;

}

///////////////////////////////////////////////////////////////////////////////

void
ColorParameterBox::Item::reset()
{

    primariesIndex        = 6;
    transferFunctionIndex = 1;
    matrixIndex           = 6;

}

///////////////////////////////////////////////////////////////////////////////

namespace {


///////////////////////////////////////////////////////////////////////////////

bool
findColorParameterBox( MP4FileHandle file, MP4Atom& coding, MP4Atom*& colr )
{

    colr = NULL;

    MP4Atom* found = NULL;
    const uint32_t atomc = coding.GetNumberOfChildAtoms();
    for( uint32_t i = 0; i < atomc; i++ ) {

        MP4Atom* atom = coding.GetChildAtom( i );
        if( BOX_CODE != atom->GetType() )
            continue;
        found = atom;
    
}
    if( !found )
        return true;

    MP4StringProperty* type;
    if( !found->FindProperty( "colr.colorParameterType", (MP4Property**)&type ))
        return true;

    const string type_nclc = "nclc";
    if( type_nclc != type->GetValue() )
        return true;

    colr = found;
    return false;

}

//
...
...
(Not finished, please download and read the complete file)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 1

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
aclocal.m4309.51 kB21-05-12 06:17
config.guess44.54 kB21-05-12 06:18
config.sub33.27 kB21-05-12 06:18
depcomp18.18 kB21-05-12 06:18
install-sh13.34 kB21-05-12 06:18
ltmain.sh237.76 kB21-05-12 06:17
missing11.15 kB21-05-12 06:18
configure521.86 kB21-05-12 06:17
configure.ac14.11 kB21-05-12 06:11
COPYING24.38 kB21-05-12 06:11
Authors.txt832.00 B21-05-12 06:21
BuildRepository.txt23.59 kB21-05-12 06:21
BuildSource.txt18.14 kB21-05-12 06:21
Documentation.txt955.00 B21-05-12 06:21
GNUmakefile.mk12.52 kB21-05-12 06:21
mp4art.11.78 kB21-05-12 06:21
mp4file.11.37 kB21-05-12 06:21
mp4subtitle.11.63 kB21-05-12 06:21
mp4track.12.96 kB21-05-12 06:21
ReleaseNotes.txt3.58 kB21-05-12 06:21
ToolGuide.txt14.94 kB21-05-12 06:21
GNUmakefile.am11.03 kB21-05-12 06:11
GNUmakefile.in76.97 kB21-05-12 06:18
chapter.h5.95 kB21-05-12 06:11
file.h14.24 kB21-05-12 06:11
file_prop.h3.73 kB21-05-12 06:11
general.h15.89 kB21-05-12 06:11
isma.h2.89 kB21-05-12 06:11
itmf_generic.h8.51 kB21-05-12 06:11
itmf_tags.h11.00 kB21-05-12 06:11
mp4v2.h2.43 kB21-05-12 06:11
platform.h2.36 kB21-05-12 06:11
project.h1.50 kB21-05-12 06:18
project.h.in1.53 kB21-05-12 06:11
sample.h21.96 kB21-05-12 06:11
streaming.h3.91 kB21-05-12 06:11
track.h13.34 kB21-05-12 06:11
track_prop.h8.46 kB21-05-12 06:11
INSTALL9.29 kB21-05-12 06:11
config.h.in1.66 kB21-05-12 06:17
endian.h2.08 kB21-05-12 06:11
impl.h361.00 B21-05-12 06:11
File.cpp3.64 kB21-05-12 06:11
File.h7.08 kB21-05-12 06:11
FileSystem.cpp2.63 kB21-05-12 06:11
FileSystem.h8.50 kB21-05-12 06:11
FileSystem_posix.cpp1.51 kB21-05-12 06:11
FileSystem_win32.cpp4.02 kB21-05-12 06:11
File_posix.cpp2.40 kB21-05-12 06:11
File_win32.cpp6.33 kB21-05-12 06:11
random.h541.00 B21-05-12 06:11
random_posix.cpp510.00 B21-05-12 06:11
random_win32.cpp523.00 B21-05-12 06:11
platform.h1.41 kB21-05-12 06:11
platform_base.h691.00 B21-05-12 06:11
platform_posix.h2.19 kB21-05-12 06:11
platform_win32.cpp31.63 kB24-08-15 13:34
platform_win32.h2.18 kB21-05-12 06:11
platform_win32_impl.h2.13 kB24-08-15 13:34
process.h559.00 B21-05-12 06:11
process_posix.cpp340.00 B21-05-12 06:11
process_win32.cpp362.00 B21-05-12 06:11
option.cpp19.96 kB21-05-12 06:11
option.h8.01 kB21-05-12 06:11
error.cpp635.00 B21-05-12 06:11
error.h508.00 B21-05-12 06:11
time.cpp372.00 B21-05-12 06:11
time.h1.82 kB21-05-12 06:11
time_posix.cpp518.00 B21-05-12 06:11
time_win32.cpp460.00 B21-05-12 06:11
warning.h989.00 B21-05-12 06:11
crc.cpp5.64 kB21-05-12 06:11
crc.h1.27 kB21-05-12 06:11
Database.cpp6.05 kB21-05-12 06:11
Database.h3.65 kB21-05-12 06:11
impl.h262.00 B21-05-12 06:11
other.cpp3.24 kB21-05-12 06:11
other.h1.08 kB21-05-12 06:11
Timecode.cpp14.68 kB21-05-12 06:11
Timecode.h3.46 kB21-05-12 06:11
TrackModifier.cpp14.26 kB21-05-12 06:11
TrackModifier.h4.39 kB21-05-12 06:11
util.h1.08 kB21-05-12 06:11
Utility.cpp20.64 kB21-05-12 06:11
Utility.h6.88 kB21-05-12 06:11
project.m41.57 kB21-05-12 06:18
project.m4.in1.56 kB21-05-12 06:11
project.m4sugar670.00 B21-05-12 06:12
README214.00 B21-05-12 06:11
3gp.cpp2.29 kB21-05-12 06:11
atoms.h19.91 kB21-05-12 06:11
atom_ac3.cpp2.11 kB21-05-12 06:11
atom_amr.cpp2.18 kB21-05-12 06:11
atom_avc1.cpp2.74 kB21-05-12 06:11
atom_avcC.cpp8.71 kB21-05-12 06:11
atom_chpl.cpp1.94 kB21-05-12 06:11
atom_colr.cpp1.65 kB21-05-12 06:11
atom_d263.cpp2.69 kB21-05-12 06:11
atom_dac3.cpp7.92 kB21-05-12 06:11
atom_damr.cpp1.93 kB21-05-12 06:11
atom_dref.cpp1.92 kB21-05-12 06:11
atom_elst.cpp2.49 kB21-05-12 06:11
atom_enca.cpp2.04 kB21-05-12 06:11
atom_encv.cpp2.69 kB21-05-12 06:11
atom_free.cpp1.43 kB21-05-12 06:11
atom_ftab.cpp1.43 kB21-05-12 06:11
atom_ftyp.cpp1.87 kB21-05-12 06:11
atom_gmin.cpp1.77 kB21-05-12 06:11
atom_hdlr.cpp3.07 kB21-05-12 06:11
atom_hinf.cpp2.09 kB21-05-12 06:11
atom_hnti.cpp1.38 kB21-05-12 06:11
atom_href.cpp1.36 kB21-05-12 06:11
atom_mdat.cpp1.19 kB21-05-12 06:11
atom_mdhd.cpp2.74 kB21-05-12 06:11
atom_meta.cpp4.34 kB21-05-12 06:11
atom_mp4s.cpp1.36 kB21-05-12 06:11
atom_mp4v.cpp2.64 kB21-05-12 06:11
atom_mvhd.cpp4.15 kB21-05-12 06:11
atom_nmhd.cpp1.04 kB21-05-12 06:11
atom_ohdr.cpp3.64 kB21-05-12 06:11
atom_pasp.cpp1.29 kB21-05-12 06:11
atom_root.cpp4.69 kB21-05-12 06:11
atom_rtp.cpp4.39 kB21-05-12 06:11
atom_s263.cpp2.52 kB21-05-12 06:11
atom_sdp.cpp1.88 kB21-05-12 06:11
atom_sdtp.cpp1.46 kB21-05-12 06:11
atom_smi.cpp1.32 kB21-05-12 06:11
atom_sound.cpp4.59 kB21-05-12 06:11
atom_standard.cpp17.46 kB21-05-12 06:11
atom_stbl.cpp2.07 kB21-05-12 06:11
atom_stdp.cpp1.74 kB21-05-12 06:11
atom_stsc.cpp2.87 kB21-05-12 06:11
atom_stsd.cpp2.75 kB21-05-12 06:11
atom_stsz.cpp2.17 kB21-05-12 06:11
atom_stz2.cpp3.01 kB21-05-12 06:11
atom_text.cpp4.27 kB21-05-12 06:11
atom_tfhd.cpp2.16 kB21-05-12 06:11
atom_tkhd.cpp4.11 kB21-05-12 06:11
atom_treftype.cpp1.76 kB21-05-12 06:11
atom_trun.cpp2.47 kB21-05-12 06:11
atom_tx3g.cpp2.83 kB21-05-12 06:11
atom_udta.cpp1.73 kB21-05-12 06:11
atom_url.cpp1.94 kB21-05-12 06:11
atom_urn.cpp1.47 kB21-05-12 06:11
atom_uuid.cpp1.43 kB21-05-12 06:11
atom_video.cpp2.61 kB21-05-12 06:11
atom_vmhd.cpp1.21 kB21-05-12 06:11
bmff.h1.49 kB21-05-12 06:11
impl.h1.18 kB21-05-12 06:11
typebmff.cpp30.08 kB21-05-12 06:11
typebmff.h7.58 kB21-05-12 06:11
cmeta.cpp34.01 kB21-05-12 06:11
descriptors.cpp21.31 kB21-05-12 06:11
descriptors.h5.75 kB21-05-12 06:11
enum.h3.99 kB21-05-12 06:11
enum.tcc3.61 kB21-05-12 06:11
exception.cpp2.76 kB21-05-12 06:11
exception.h2.12 kB21-05-12 06:11
impl.h261.00 B21-05-12 06:11
isma.cpp29.53 kB21-05-12 06:11
CoverArtBox.cpp6.75 kB21-05-12 06:11
CoverArtBox.h4.17 kB21-05-12 06:11
generic.cpp13.17 kB21-05-12 06:11
generic.h1.97 kB21-05-12 06:11
impl.h1.18 kB21-05-12 06:11
itmf.h1.54 kB21-05-12 06:11
Tags.cpp28.46 kB21-05-12 06:11
Tags.h6.82 kB21-05-12 06:11
type.cpp17.59 kB21-05-12 06:11
type.h10.08 kB21-05-12 06:11
log.cpp12.97 kB21-05-12 06:11
log.h3.13 kB21-05-12 06:11
mp4.cpp135.58 kB21-05-12 06:11
mp4array.h4.35 kB21-05-12 06:11
mp4atom.cpp30.00 kB21-05-12 06:11
mp4atom.h6.58 kB21-05-12 06:11
mp4container.cpp6.14 kB21-05-12 06:11
mp4container.h2.86 kB21-05-12 06:11
mp4descriptor.cpp5.82 kB21-05-12 06:11
mp4descriptor.h2.85 kB21-05-12 06:11
mp4file.cpp134.33 kB21-05-12 06:11
mp4file.h31.26 kB21-05-12 06:11
mp4file_io.cpp13.55 kB21-05-12 06:11
mp4info.cpp19.89 kB21-05-12 06:11
mp4property.cpp32.37 kB21-05-12 06:11
mp4property.h18.64 kB21-05-12 06:11
mp4track.cpp59.55 kB21-05-12 06:11
mp4track.h9.26 kB21-05-12 06:11
mp4util.cpp9.66 kB21-05-12 06:11
mp4util.h3.19 kB21-05-12 06:11
ocidescriptors.cpp10.31 kB21-05-12 06:11
ocidescriptors.h4.92 kB21-05-12 06:11
odcommands.cpp3.74 kB21-05-12 06:11
odcommands.h2.71 kB21-05-12 06:11
qosqualifiers.cpp5.30 kB21-05-12 06:11
qosqualifiers.h2.18 kB21-05-12 06:11
coding.cpp3.11 kB21-05-12 06:11
coding.h1.31 kB21-05-12 06:11
ColorParameterBox.cpp10.21 kB21-05-12 06:11
ColorParameterBox.h7.16 kB21-05-12 06:11
impl.h1.18 kB21-05-12 06:11
PictureAspectRatioBox.cpp8.85 kB21-05-12 06:11
PictureAspectRatioBox.h6.15 kB21-05-12 06:11
qtff.h1.56 kB21-05-12 06:11
rtphint.cpp39.40 kB21-05-12 06:11
rtphint.h8.33 kB21-05-12 06:11
src.h1.13 kB21-05-12 06:11
text.cpp1.07 kB21-05-12 06:11
text.h423.00 B21-05-12 06:11
util.h1.77 kB21-05-12 06:11
impl.h270.00 B21-05-12 06:11
mp4art.cpp13.42 kB21-05-12 06:11
mp4chaps.cpp34.81 kB21-05-12 06:11
mp4extract.cpp7.75 kB21-05-12 06:11
mp4file.cpp6.35 kB21-05-12 06:11
mp4info.cpp9.59 kB21-05-12 06:11
mp4subtitle.cpp5.99 kB21-05-12 06:11
mp4tags.cpp24.72 kB21-05-12 06:11
mp4track.cpp31.68 kB21-05-12 06:11
mp4trackdump.cpp8.21 kB21-05-12 06:11
project.h1.46 kB21-05-12 06:11
libmp4v2.vcproj34.71 kB21-05-12 06:11
mp4art.vcproj20.84 kB21-05-12 06:11
mp4chaps.vcproj20.85 kB21-05-12 06:11
mp4extract.vcproj20.86 kB21-05-12 06:11
mp4file.vcproj19.96 kB21-05-12 06:11
mp4info.vcproj20.85 kB21-05-12 06:11
mp4subtitle.vcproj20.86 kB21-05-12 06:11
mp4tags.vcproj20.85 kB21-05-12 06:11
mp4track.vcproj20.85 kB21-05-12 06:11
mp4trackdump.vcproj20.86 kB21-05-12 06:11
mp4v2.sln26.04 kB21-05-12 06:11
<man1>0.00 B24-08-15 11:46
<mp4v2>0.00 B24-08-15 11:46
<man>0.00 B24-08-15 11:46
<mp4v2>0.00 B24-08-15 11:46
<io>0.00 B24-08-15 11:46
<number>0.00 B24-08-15 11:46
<process>0.00 B24-08-15 11:46
<prog>0.00 B24-08-15 11:46
<sys>0.00 B24-08-15 11:46
<time>0.00 B24-08-15 11:46
<bmff>0.00 B24-08-15 11:46
<itmf>0.00 B24-08-15 11:46
<qtff>0.00 B24-08-15 11:46
<include>0.00 B24-08-15 11:46
<libmp4v2>0.00 B24-08-15 11:46
<mp4art>0.00 B24-08-15 11:46
<mp4chaps>0.00 B24-08-15 11:46
<mp4extract>0.00 B24-08-15 11:46
<mp4file>0.00 B24-08-15 11:46
<mp4info>0.00 B24-08-15 11:46
<mp4subtitle>0.00 B24-08-15 11:46
<mp4tags>0.00 B24-08-15 11:46
<mp4track>0.00 B24-08-15 11:46
<mp4trackdump>0.00 B24-08-15 11:46
<autoaux>0.00 B24-08-15 11:46
<doc>0.00 B24-08-15 11:46
<include>0.00 B24-08-15 11:46
<libplatform>0.00 B24-08-15 13:34
<libutil>0.00 B24-08-15 11:46
<project>0.00 B24-08-15 11:46
<src>0.00 B24-08-15 11:46
<util>0.00 B24-08-15 11:46
<vstudio9.0>0.00 B24-08-15 11:46
<mp4v2-2.0.0>0.00 B24-08-15 11:46
<mp4v2-2.0.0>0.00 B24-08-15 11:46
...
Sponsored links

ColorParameterBox.cpp (671.61 kB)

Need 1 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D