#include <stdio.h>
#include <fcntl.h>
#include <MediaInfoDLL/MediaInfoDLL_Static.h>

// Quick attempt at using libmediainfo, with Unix. I can not guarantee that
// this is the right way to use the library, but it does at least appear to
// work.
//
// I compile this using:
// gcc -g -o test-mediainfo test-mediainfo.c -lmediainfo -lzen -lz -lstdc++
//
// Jorgen Lundman <lundman@lundman.net>

int main(int argc, char **argv)
{
    size_t result = 0;
    char *buffer = NULL;
    void *handle = NULL;

    printf("Welcome to libmediainfo tester example.\n");

    if (argc != 2) {
        printf("Feed me a file name\n");
        exit(0);
    }

    handle=MediaInfo_New();

    printf("MediaInfo said %p\n", handle);

    result = MediaInfo_Option(handle, "Internet", "No");

    printf("MediaInfo_Option said %d\n", result);

    // Open first argument given
    result = MediaInfo_Open(handle, argv[1]);

    printf("MediaInfo_Open() returns %lu\n", result);

    if (!handle) {
        perror("open:");
        exit(1);
    }

    buffer = MediaInfo_Inform(handle, 0);

    // MediaInfo uses window's style "\r" only, so change them to \n for unix.
    if (buffer && *buffer) {
        char *r;
        r = buffer;
        while(*r && (r = strchr(buffer, '\r'))) *r = '\n';
    }

    printf("MediaInfo_Inform says '\n%s\n'\n", buffer);

    // * runtime 6949, rating 8.5, resolution '1280x544', width 1280, height 544,
    // * aspect_ratio '2.35:1', system 'Matroska', video_codec 'x264', fps 23.976,
    // * size 7042886698, ttid 'tt0078748'

    printf("Calling individual items: \n");

    buffer = MediaInfo_Get(handle, MediaInfo_Stream_Video,
                           0 , "AspectRatio/String" ,
                           MediaInfo_Info_Text,
                           MediaInfo_Info_Name);
    printf("Ratio is: '%s'\n", buffer);
    buffer = MediaInfo_Get(handle, MediaInfo_Stream_Video,
                           0 , "Width" ,
                           MediaInfo_Info_Text,
                           MediaInfo_Info_Name);
    printf("Width: '%s'\n", buffer);
    buffer = MediaInfo_Get(handle, MediaInfo_Stream_Video,
                           0 , "Height" ,
                           MediaInfo_Info_Text,
                           MediaInfo_Info_Name);
    printf("Height: '%s'\n", buffer);
    buffer = MediaInfo_Get(handle, MediaInfo_Stream_Video,
                           0 , "PlayTime" ,
                           MediaInfo_Info_Text,
                           MediaInfo_Info_Name);
    printf("Playtime: '%s'\n", buffer);
    buffer = MediaInfo_Get(handle, MediaInfo_Stream_General,
                           0 , "Format" ,
                           MediaInfo_Info_Text,
                           MediaInfo_Info_Name);
    printf("Format: '%s'\n", buffer);
    buffer = MediaInfo_Get(handle, MediaInfo_Stream_Video,
                           0 , "Codec" ,
                           MediaInfo_Info_Text,
                           MediaInfo_Info_Name);
    printf("Codec: '%s'\n", buffer);
    buffer = MediaInfo_Get(handle, MediaInfo_Stream_Video,
                           0 , "FrameRate" ,
                           MediaInfo_Info_Text,
                           MediaInfo_Info_Name);
    printf("FrameRate: '%s'\n", buffer);

   buffer = MediaInfo_Get(handle, MediaInfo_Stream_Video,
                           0 , "Encoded_Library" ,
                           MediaInfo_Info_Text,
                           MediaInfo_Info_Name);
    printf("Library: '%s'\n", buffer);

    buffer = MediaInfo_Get(handle, MediaInfo_Stream_Video,
                           0 , "Encoded_Library/Name" ,
                           MediaInfo_Info_Text,
                           MediaInfo_Info_Name);
    printf("Writing: '%s'\n", buffer);

    printf("All done.\n");

    if (handle)
        MediaInfo_Delete(handle);
}

/*
 * NMJ for Syabas creates the following video table
 VIDEO_ID INTEGER PRIMARY KEY,
 TITLE TEXT ,
 SEARCH_TITLE TEXT ,
 RELEASE_DATE TEXT DEFAULT '9999-01-01',
 PATH TEXT,
 DETAIL_POSTER TEXT,
 THUMBNAIL TEXT,
 RUNTIME INTEGER,
 RATING INTEGER DEFAULT 0,
 RESOLUTION TEXT,
 WIDTH TEXT,
 HEIGHT TEXT,
 ASPECT_RATIO TEXT,
 PARENTAL_RATING TEXT,
 SYSTEM TEXT,
 VIDEO_CODEC TEXT,
 FPS INTEGER,
 SIZE INTEGER,
 PLAY_COUNT INTEGER DEFAULT 0,
 SHOW_ID INTEGER,
 EPISODE INTEGER,
 CREATE_TIME TEXT,
 WALLPAPER TEXT,
 CAST_ID TEXT,
 UPDATE_STATE INTEGER,
 MOUNT_DEVICE_ID INTEGER,
 SEASON INTEGER,
 TTID TEXT,
 TITLE_TYPE TEXT,
 VIDEO1 TEXT,
 VIDEO2 TEXT,
 VIDEO3 TEXT,
 VIDEO4 TEXT,
 VIDEO5 TEXT);
 * runtime 6949, rating 8.5, resolution '1280x544', width 1280, height 544,
 * aspect_ratio '2.35:1', system 'Matroska', video_codec 'x264', fps 23.976,
 * size 7042886698, ttid 'tt0078748'
INSERT INTO VIDEO VALUES(1,'Alien','Alien','1979-05-25','HD/Alien-720p.mkv','nmj_database/media/video/poster/MV5BMTUwNjE5MzQwMF5BMl5BanBnXkFtZTYwODkwNzM5._V1._SY600_SX600_.jpg',NULL,6949,8.5,'1280x544',1280,544,'2.35:1','TV-14','Matroska','x264',23.976,7042886698,0,1,NULL,'2010-11-28 11:58:33',NULL,'0,1,2,3,4,5,6,7,8,9,10,0',2,NULL,NULL,'tt0078748',NULL,NULL,NULL,NULL,NULL,NULL);
 *
 */

