Changeset 322


Ignore:
Timestamp:
05/11/07 14:08:16 (17 years ago)
Author:
r2d
Message:

Added winamp extended info (replay gain and title formating)

Location:
winamp-musepack/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • winamp-musepack/trunk/in_mpc.cpp

    r248 r322  
    11/*
    2         Copyright (C) 2006 Nicolas BOTTI <rududu at laposte.net>
     2        Copyright (C) 2006-2007 Nicolas BOTTI <rududu at laposte.net>
    33        This file is part of the Musepack Winamp plugin.
    44
     
    4848
    4949mpc_player * player;
     50mpc_player * player_ext;
    5051
    5152// module definition.
     
    9394void config(HWND hwndParent)
    9495{
    95         MessageBoxA(hwndParent, "No configuration yet", "Configuration", MB_OK);
     96        MessageBoxA(hwndParent, "Do you really need a configuration ?", "Musepack Configuration", MB_OK);
    9697}
    9798void about(HWND hwndParent)
    9899{
    99         MessageBoxA(hwndParent,"Musepack plugin for winamp\nAll bugs © Nicolas BOTTI", "Uh ?", MB_OK);
     100        if (MessageBoxA(hwndParent,"Musepack plugin for winamp\nAll bugs © Nicolas BOTTI\n\nDo you want to go to http://www.musepack.net ?", "Uh ?", MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES)
     101                ShellExecute( hwndParent, "open", "http://www.musepack.net", NULL, NULL, SW_NORMAL);
    100102}
    101103
     
    225227}
    226228
    227 }
     229__declspec( dllexport ) int winampGetExtendedFileInfo(const char *fn, const char *data, char *dest, int destlen )
     230{
     231        if ( !fn || (fn && !fn[0]) ) return 0;
     232
     233        if (player_ext == 0)
     234                player_ext = new mpc_player(fn, 0);
     235        else
     236                player_ext->openFile(fn);
     237
     238        dest[0] = 0;
     239
     240        return player_ext->getExtendedFileInfo(data, dest, destlen);
     241}
     242
     243}
  • winamp-musepack/trunk/mpc_player.cpp

    r283 r322  
    11/*
    2         Copyright (C) 2006 Nicolas BOTTI <rududu at laposte.net>
     2        Copyright (C) 2006-2007 Nicolas BOTTI <rududu at laposte.net>
    33        This file is part of the Musepack Winamp plugin.
    44
     
    2020#include <windows.h>
    2121#include <math.h>
     22#include <strsafe.h>
    2223
    2324#include <sstream>
     
    6667}
    6768
    68 mpc_player::mpc_player(char * fn, In_Module * in_mod)
     69mpc_player::mpc_player(const char * fn, In_Module * in_mod)
    6970{
    7071        init(in_mod);
     
    9293}
    9394
    94 int mpc_player::openFile(char * fn)
    95 {
     95int mpc_player::openFile(const char * fn)
     96{
     97        if (strcmp(fn, lastfn) == 0)
     98                return 0;
     99
    96100        closeFile();
    97101
     
    425429        return 0;
    426430}
     431
     432int mpc_player::getExtendedFileInfo(const char *data, char *dest, int destlen )
     433{
     434        if (!stricmp(data, "length")) {
     435                StringCchPrintfA(dest, destlen, "%u", getLength());
     436        } else if (!stricmp(data, "bitrate")) {
     437                StringCchPrintfA(dest, destlen, "%u", (unsigned int)(si.average_bitrate/1000.));
     438        } else if (!stricmp(data, "replaygain_album_gain"))     {
     439                if (si.gain_album)
     440                        StringCchPrintfA(dest, destlen, "%-+.2f dB", 64.82f - si.gain_album / 256.f);
     441        } else if (!stricmp(data, "replaygain_album_peak"))     {
     442                if (si.peak_album)
     443                        StringCchPrintfA(dest, destlen, "%-.9f", (float)((1 << 15) / pow(10, si.peak_album / (20 * 256))));
     444        } else if (!stricmp(data, "replaygain_track_gain"))     {
     445                if (si.gain_title)
     446                        StringCchPrintfA(dest, destlen, "%-+.2f dB", 64.82f - si.gain_title / 256.f);
     447        } else if (!stricmp(data, "replaygain_track_peak"))     {               
     448                if (si.peak_title)
     449                        StringCchPrintfA(dest, destlen, "%-.9f", (float)((1 << 15) / pow(10, si.peak_title / (20 * 256))));
     450        } else {
     451
     452                if (tag_file == 0)
     453                        tag_file = new TagLib::FileRef(lastfn, false);
     454
     455                if (!tag_file->isNull() && tag_file->tag()) {
     456                        TagLib::Tag *tag = tag_file->tag();
     457                        WCHAR buf[2048];
     458
     459                        if (!stricmp(data, "title"))
     460                                MultiByteToWideChar(CP_UTF8, 0, tag->title().toCString(true), -1, buf, 2048);
     461                        else if (!stricmp(data, "artist"))
     462                                MultiByteToWideChar(CP_UTF8, 0, tag->artist().toCString(true), -1, buf, 2048);
     463                        else if (!stricmp(data, "album"))
     464                                MultiByteToWideChar(CP_UTF8, 0, tag->album().toCString(true), -1, buf, 2048);
     465                        else if (!stricmp(data, "comment"))
     466                                MultiByteToWideChar(CP_UTF8, 0, tag->comment().toCString(true), -1, buf, 2048);
     467                        else if (!stricmp(data, "genre"))
     468                                MultiByteToWideChar(CP_UTF8, 0, tag->genre().toCString(true), -1, buf, 2048);
     469                        else if (!stricmp(data, "trackno")) {
     470                                StringCchPrintfA(dest, destlen, "%u", tag->track());
     471                                return 1;
     472                        } else if (!stricmp(data, "year")) {
     473                                StringCchPrintfA(dest, destlen, "%u", tag->year());
     474                                return 1;
     475                        }
     476
     477                        WideCharToMultiByte(CP_ACP, 0, buf, -1, dest, destlen, NULL, NULL);
     478                } else
     479                        return 0;
     480        }
     481        return 1;
     482}
  • winamp-musepack/trunk/mpc_player.h

    r254 r322  
    11/*
    2         Copyright (C) 2006 Nicolas BOTTI <rududu at laposte.net>
     2        Copyright (C) 2006-2007 Nicolas BOTTI <rududu at laposte.net>
    33        This file is part of the Musepack Winamp plugin.
    44
     
    3232public:
    3333        mpc_player(In_Module * in_mod);
    34         mpc_player(char * fn, In_Module * in_mod);
     34        mpc_player(const char * fn, In_Module * in_mod);
    3535        ~mpc_player(void);
    3636
     37        int openFile(const char * fn);
    3738        int play(char *fn);
    3839        void stop(void);
    3940
    4041        void getFileInfo(char *title, int *length_in_ms);
    41         int getLength(void) {return (int)(si.samples * 1000 / si.sample_freq);}
     42        int getExtendedFileInfo(const char *data, char *dest, int destlen);
     43        int getLength(void) {return (int)(mpc_streaminfo_get_length(&si) * 1000);}
    4244        int getOutputTime(void) {return (int)(decode_pos_sample * 1000 / si.sample_freq);}
    4345
     
    7274        static DWORD WINAPI runThread(void * pThis);
    7375        int decodeFile(void);
    74         int openFile(char * fn);
    7576        void closeFile(void);
    7677
Note: See TracChangeset for help on using the changeset viewer.