mp4tags.cpp ( File view )

  • By 飞狼love6 2015-08-24
  • View(s):5
  • Download(s):1
  • Point(s): 1
			/* mp4tags -- tool to set iTunes-compatible metadata tags
 *
 * 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.
 *
 * Contributed to MPEG4IP
 * by Christopher League <league@contrapunctus.net>
 */

#include "util/impl.h"

using namespace mp4v2::util;

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

/* One-letter options -- if you want to rearrange these, change them
   here, immediately below in OPT_STRING, and in the help text. */
#define OPT_HELP         0x01ff
#define OPT_VERSION      0x02ff
#define OPT_REMOVE       'r'
#define OPT_ALBUM        'A'
#define OPT_ARTIST       'a'
#define OPT_TEMPO        'b'
#define OPT_COMMENT      'c'
#define OPT_COPYRIGHT    'C'
#define OPT_DISK         'd'
#define OPT_DISKS        'D'
#define OPT_ENCODEDBY    'e'
#define OPT_TOOL         'E'
#define OPT_GENRE        'g'
#define OPT_GROUPING     'G'
#define OPT_HD           'H'
#define OPT_MEDIA_TYPE   'i'
#define OPT_CONTENTID    'I'
#define OPT_LONGDESC     'l'
#define OPT_GENREID      'j'
#define OPT_LYRICS       'L'
#define OPT_DESCRIPTION  'm'
#define OPT_TVEPISODE    'M'
#define OPT_TVSEASON     'n'
#define OPT_TVNETWORK    'N'
#define OPT_TVEPISODEID  'o'
#define OPT_CATEGORY     'O'
#define OPT_PLAYLISTID   'p'
#define OPT_PICTURE      'P'
#define OPT_PODCAST      'B'
#define OPT_ALBUM_ARTIST 'R'
#define OPT_NAME         's'
#define OPT_TVSHOW       'S'
#define OPT_TRACK        't'
#define OPT_TRACKS       'T'
#define OPT_XID          'x'
#define OPT_RATING       'X'
#define OPT_COMPOSER     'w'
#define OPT_RELEASEDATE  'y'
#define OPT_ARTISTID     'z'
#define OPT_COMPOSERID   'Z'

#define OPT_STRING  "r:A:a:b:c:C:d:D:e:E:g:G:H:i:I:j:l:L:m:M:n:N:o:O:p:P:B:R:s:S:t:T:x:X:w:y:z:Z:"

#define ELEMENT_OF(x,i) x[int(i)]

static const char* const help_text =
    "OPTION... FILE...\n"
    "Adds or modifies iTunes-compatible tags on MP4 files.\n"
    "\n"
    "      -help            Display this help text and exit\n"
    "      -version         Display version information and exit\n"
    "  -A, -album       STR  Set the album title\n"
    "  -a, -artist      STR  Set the artist information\n"
    "  -b, -tempo       NUM  Set the tempo (beats per minute)\n"
    "  -c, -comment     STR  Set a general comment\n"
    "  -C, -copyright   STR  Set the copyright information\n"
    "  -d, -disk        NUM  Set the disk number\n"
    "  -D, -disks       NUM  Set the number of disks\n"
    "  -e, -encodedby   STR  Set the name of the person or company who encoded the file\n"
    "  -E, -tool        STR  Set the software used for encoding\n"
    "  -g, -genre       STR  Set the genre name\n"
    "  -G, -grouping    STR  Set the grouping name\n"
    "  -H, -hdvideo     NUM  Set the HD flag (1\\0)\n"
    "  -i, -type        STR  Set the Media Type(tvshow, movie, music, ...)\n"
    "  -I, -contentid   NUM  Set the content ID\n"
    "  -j, -genreid     NUM  Set the genre ID\n"
    "  -l, -longdesc    STR  Set the long description\n"
    "  -L, -lyrics      NUM  Set the lyrics\n"
    "  -m, -description STR  Set the short description\n"
    "  -M, -episode     NUM  Set the episode number\n"
    "  -n, -season      NUM  Set the season number\n"
    "  -N, -network     STR  Set the TV network\n"
    "  -o, -episodeid   STR  Set the TV episode ID\n"
	"  -O, -category    STR  Set the category\n"
    "  -p, -playlistid  NUM  Set the playlist ID\n"
    "  -P, -picture     PTH  Set the picture as a .png\n"
    "  -B, -podcast     NUM  Set the podcast flag.\n"
    "  -R, -albumartist STR  Set the album artist\n"
    "  -s, -song        STR  Set the song title\n"
    "  -S  -show        STR  Set the TV show\n"
    "  -t, -track       NUM  Set the track number\n"
    "  -T, -tracks      NUM  Set the number of tracks\n"
    "  -x, -xid         STR  Set the globally-unique xid (vendor:scheme:id)\n"
	"  -X, -rating      STR  Set the Rating(none, clean, explicit)\n"
    "  -w, -writer      STR  Set the composer information\n"
    "  -y, -year        NUM  Set the release date\n"
    "  -z, -artistid    NUM  Set the artist ID\n"
    "  -Z, -composerid  NUM  Set the composer ID\n"
    "  -r, -remove      STR  Remove tags by code (e.g. \"-r cs\"\n"
    "                        removes the comment and song tags)";

extern "C" int
    main( int argc, char** argv )
{

    const prog::Option long_options[] = {

        {
 "help",        prog::Option::NO_ARG,       0, OPT_HELP         
},
        {
 "version",     prog::Option::NO_ARG,       0, OPT_VERSION      
},
        {
 "album",       prog::Option::REQUIRED_ARG, 0, OPT_ALBUM        
},
        {
 "artist",      prog::Option::REQUIRED_ARG, 0, OPT_ARTIST       
},
        {
 "comment",     prog::Option::REQUIRED_ARG, 0, OPT_COMMENT      
},
        {
 "copyright",   prog::Option::REQUIRED_ARG, 0, OPT_COPYRIGHT    
},
        {
 "disk",        prog::Option::REQUIRED_ARG, 0, OPT_DISK         
},
        {
 "disks",       prog::Option::REQUIRED_ARG, 0, OPT_DISKS        
},
        {
 "encodedby",   prog::Option::REQUIRED_ARG, 0, OPT_ENCODEDBY    
},
        {
 "tool",        prog::Option::REQUIRED_ARG, 0, OPT_TOOL         
},
        {
 "genre",       prog::Option::REQUIRED_ARG, 0, OPT_GENRE        
},
        {
 "grouping",    prog::Option::REQUIRED_ARG, 0, OPT_GROUPING     
},
        {
 "hdvideo",     prog::Option::REQUIRED_ARG, 0, OPT_HD           
},
        {
 "type",        prog::Option::REQUIRED_ARG, 0, OPT_MEDIA_TYPE   
},
        {
 "contentid",   prog::Option::REQUIRED_ARG, 0, OPT_CONTENTID    
},
        {
 "longdesc",    prog::Option::REQUIRED_ARG, 0, OPT_LONGDESC     
},
        {
 "genreid",     prog::Option::REQUIRED_ARG, 0, OPT_GENREID      
},
        {
 "lyrics",      prog::Option::REQUIRED_ARG, 0, OPT_LYRICS       
},
        {
 "description", prog::Option::REQUIRED_ARG, 0, OPT_DESCRIPTION  
},
        {
 "episode",     prog::Option::REQUIRED_ARG, 0, OPT_TVEPISODE    
},
        {
 "season",      prog::Option::REQUIRED_ARG, 0, OPT_TVSEASON     
},
        {
 "network",     prog::Option::REQUIRED_ARG, 0, OPT_TVNETWORK    
},
        {
 "episodeid",   prog::Option::REQUIRED_ARG, 0, OPT_TVEPISODEID  
},
        {
 "playlistid",  prog::Option::REQUIRED_ARG, 0, OPT_PLAYLISTID   
},
        {
 "picture",     prog::Option::REQUIRED_ARG, 0, OPT_PICTURE      
},
        {
 "podcast",     prog::Option::REQUIRED_ARG, 0, OPT_PODCAST      
},
        {
 "song",        prog::Option::REQUIRED_ARG, 0, OPT_NAME         
},
        {
 "show",        prog::Option::REQUIRED_ARG, 0, OPT_TVSHOW       
},
        {
 "tempo",       prog::Option::REQUIRED_ARG, 0, OPT_TEMPO        
},
        {
 "track",       prog::Option::REQUIRED_ARG, 0, OPT_TRACK        
},
        {
 "tracks",      prog::Option::REQUIRED_ARG, 0, OPT_TRACKS       
},
        {
 "xid",         prog::Option::REQUIRED_ARG, 0, OPT_XID          
},
        {
 "writer",      prog::Option::REQUIRED_ARG, 0, OPT_COMPOSER     
},
        {
 "year",        prog::Option::REQUIRED_ARG, 0, OPT_RELEASEDATE  
},
        {
 "artistid",    prog::Option::REQUIRED_ARG, 0, OPT_ARTISTID     
},
        {
 "composerid",  prog::Option::REQUIRED_ARG, 0, OPT_COMPOSERID   
},
        {
 "remove",      prog::Option::REQUIRED_ARG, 0, OPT_REMOVE       
},
        {
 "albumartist", prog::Option::REQUIRED_ARG, 0, OPT_ALBUM_ARTIST 
},
        {
 "category",    prog::Option::REQUIRED_ARG, 0, OPT_CATEGORY 
},
        {
 "rating",      prog::Option::REQUIRED_ARG, 0, OPT_RATING 
},
        {
 NULL, prog::Option::NO_ARG, 0, 0 
}
    
};

    /* Sparse arrays of tag data: some space is wasted, but it's more
       convenient to say tags[OPT_SONG] than to enumerate all the
       metadata types (again) as a struct. */
    const char *tags[UCHAR_MAX];
    uint64_t nums[UCHAR_MAX];

    memset( tags, 0, sizeof( tags ) );
    memset( nums, 0, sizeof( nums ) );

    /* Any modifications requested? */
    int mods = 0;

    /* Option-processing loop. */
    int c = prog::getOptionSingle( argc, argv, OPT_STRING, long_options, NULL );
    while ( c != -1 ) {

        int r = 2;
        switch ( c ) {

                /* getopt() returns '?' if there was an error.  It already
                   printed the error message, so just return. */
            case '?':
                return 1;

                /* Help and version requests handled here. */
            case OPT_HELP:
                fprintf( stderr, "usage %s %s\n", argv[0], help_text );
                return 0;
            case OPT_VERSION:
                fprintf( stderr, "%s - %s\n", argv[0], MP4V2_PROJECT_name_formal );
                return 0;

                /* Integer arguments: convert them using sscanf(). */
            case OPT_TEMPO:
            case OPT_DISK:
            case OPT_DISKS:
            case OPT_HD:
            case OPT_CONTENTID:
            case OPT_GENREID:
            case OPT_TVEPISODE:
            case OPT_TVSEASON:
            case OPT_PLAYLISTID:
            case OPT_TRACK:
            case OPT_TRACKS:
            case OPT_ARTISTID:
            case OPT_COMPOSERID:
            case OPT_PODCAST:
                if ( c == OPT_PLAYLISTID ) {

                    r = sscanf( prog::optarg, "%llu", &nums[c] );
                
} else {

                    unsigned int n;
                    r = sscanf( prog::optarg, "%u", &n );
                    if ( r >= 1 )
                    {

                        nums[c] = static_cast<uint64_t>( n );
                    
}
                
}
                if ( r < 1 ) {

                    fprintf( stderr, "%s: option requires integer argument -- %c\n",
                             argv[0], c );
                    return 2;
                
}
                /* Break not, lest ye be broken.  :) */
                /* All arguments: all valid options end up here, and we just
                   stuff the string pointer into the tags[]
...
...
(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

mp4tags.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