<?php

/*
 * (c) 2008/09/10- yoya@awm.jp
 */

function get_ftyp_brand($data) {
    
$data_len strlen($data);
    
$data_pos 0;
    
$ret_value = array();
    while(
true) {
        if (
$data_len < ($data_pos )) {
            break;
        }
        
$result unpack('N'substr($data$data_pos4));
        
$length $result[1];
        if (
$length <= 0) {
            break;
        }
        
$fourcc substr($data$data_pos 44);
        if (
$fourcc != 'ftyp') {
            
$data_pos += $length;
            continue;
        }
        
$major_brand substr($data$data_pos 84);
        
$result unpack('N'substr($data$data_pos 124));
        
$minor_version $result[1];
        
$compatible_brand = array();
        for ( 
$i 16 $i $length $i += ) {
            
$compatible_brand[] = substr($data$data_pos $i4);
        }
        
$ret_value['MajorBrand']      = $major_brand;
    
$ret_value['MinorVersion']   = $minor_version;
        
$ret_value['CompatibleBrand'] = $compatible_brand;
        return 
$ret_value;
    }
    return 
null;
}

if (
$argc != 2) {
    
fprintf(STDERR"Usage: php get_ftyp_brand.php <3gp or 3gp2 file>\n");
    exit(
1);
}

$movie_filename $argv[1];
$movie_data file_get_contents($movie_filename);

$result get_ftyp_brand($movie_data);
$major_brand $result['MajorBrand'];
$minor_version $result['MinorVersion'];
$compatible_brand $result['CompatibleBrand'];

echo 
"MajorBrand: $major_brand\n";
echo 
"MinorVersion: $minor_version\n";
echo 
"CompatibleBrand: ".join(' '$compatible_brand)."\n";