--===============0677442041== Content-Type: multipart/alternative; boundary="===============6702552856587719694==" --===============6702552856587719694== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable > On None, Sergey Ivanov wrote: > > Looks works for me. > = > Leo Franchi wrote: > Doesn't compile when KDE4_BUILD_TESTS is enabled: > = > = > [ 54%] Building CXX object tests/core-impl/collections/proxycollectio= n/CMakeFiles/testproxycollectionmeta.dir/TestProxyCollectionMeta.o > /home/leo/kde/src/amarok/tests/core-impl/collections/proxycollection/= TestProxyCollectionMeta.cpp: In member function =E2=80=98void TestProxyColl= ectionMeta::testEditableCapabilityOnMultipleTracks()=E2=80=99: = = = > /home/leo/kde/src/amarok/tests/core-impl/collections/proxycollection/= TestProxyCollectionMeta.cpp:463:51: error: cannot allocate an object of abs= tract type =E2=80=98MyEditCapability=E2=80=99 > /home/leo/kde/src/amarok/tests/core-impl/collections/proxycollection/= TestProxyCollectionMeta.cpp:433:1: note: because the following virtual fu= nctions are pure within =E2=80=98MyEditCapability=E2=80=99: > /home/leo/kde/src/amarok/src/core/capabilities/EditCapability.h:57:26= : note: virtual void Capabilities::EditCapability::setUid(const QString&= , const QString&) > /home/leo/kde/src/amarok/tests/core-impl/collections/proxycollection/= TestProxyCollectionMeta.cpp:464:51: error: cannot allocate an object of abs= tract type =E2=80=98MyEditCapability=E2=80=99 > /home/leo/kde/src/amarok/tests/core-impl/collections/proxycollection/= TestProxyCollectionMeta.cpp:433:1: note: since type =E2=80=98MyEditCapabi= lity=E2=80=99 has pure virtual functions > make[2]: *** [tests/core-impl/collections/proxycollection/CMakeFiles/= testproxycollectionmeta.dir/TestProxyCollectionMeta.o] Error 1 > make[1]: *** [tests/core-impl/collections/proxycollection/CMakeFiles/= testproxycollectionmeta.dir/all] Error 2 > > = > Leo Franchi wrote: > I have some doubts about the mass tagging UI. When I first open the M= usicBrainz tagger with multiple files selected, I see this: > = > http://imagebin.ca/view/e25y1kwP.html' > = > I can select files in the left pane, and that populates the fields be= low. It's not clear if the "Start Searching..." button operates on the curr= ently selected track, or all the tracks. I learned it operates on all the t= racks, but I didn't know until I tried it. The text should clarify this. Th= en I see this: > = > http://imagebin.ca/view/iKtHSXE.html' > = > Now I am just confused. What happened to the tracks on the left? What= are the entries on the right? None of them are track names, they are actua= lly album names. It's not good to h ave the left listview be tracks and the= right listview be albums without any sort of help for the user to figure t= hat out. Anyway, as a new user i'm curious as to what these entries are, so= I expand one or two: > = > http://imagebin.ca/view/jrUBpR3K.html' > = > And so I am extrapolating here, it seems like it is picking albums an= d bolding the names of tracks in the album that matches one of the tracks I= had on the left---but has now disappeared. What are all the non-bold track= names for? They are not related to the original tracks in the left hand pa= ne. I can't have an overview of what this dialog is actually going to do. > = > I'm not sure at this point if "Save" operates on the currently select= ed tracks, or if it saves all the tracks (what tracks? the ones that are bo= ld? all of them? it is confusing). = > = > Also, I am unable to use the MusicDNS finder. No matter what, it neve= r find anything. Here is my debug output: > = > = > amarok: BEGIN: MusicDNSFinder::MusicDNSFinder(const Meta::Track= List&, QObject*, const QString&, int, const QString&, const QString&, const= QString&) = > amarok: [MusicDNSFinder] Initiating MusicDNS search: = > amarok: [MusicDNSFinder] Host: "ofa.musicdn= s.org" = > amarok: [MusicDNSFinder] Port: 80 = > amarok: [MusicDNSFinder] Path Prefix: "/ofa/1" = > amarok: [MusicDNSFinder] Client ID: "0c6019606b1= d8a54d0985e448f3603ca" = > amarok: [MusicDNSFinder] Client version: "2.3-GIT" = > amarok: BEGIN: MusicDNSAudioDecoder::MusicDNSAudioDecoder(con= st Meta::TrackList&, int) = > amarok: END__: MusicDNSAudioDecoder::MusicDNSAudioDecoder(con= st Meta::TrackList&, int) - Took 0.085s = > amarok: END__: MusicDNSFinder::MusicDNSFinder(const Meta::Track= List&, QObject*, const QString&, int, const QString&, const QString&, const= QString&) - Took 0.086s = > amarok: END__: void MusicBrainzTagger::searchDone() - DELAY Took = (quite long) 10s = > amarok: END__: void MusicBrainzFinder::sendNewRequest() - DELAY Too= k (quite long) 10s = > amarok: BEGIN: void MusicDNSFinder::decodingDone(ThreadWeaver::Job*= ) = > amarok: END__: void MusicDNSFinder::decodingDone(ThreadWeaver::Job*= ) - Took 0.00011s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: [MusicDNSFinder] There is no any queued requests. Stoppin= g timer. = > amarok: BEGIN: void MusicBrainzTagger::mdnsSearchDone() = > amarok: END__: void MusicBrainzTagger::mdnsSearchDone() - Took 6.= 9e-05s = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00026= s = > amarok: BEGIN: void MusicBrainzFinder::sendNewRequest() = > amarok: [MusicBrainzFinder] There is no any queued requests. Stop= ping timer. = > amarok: BEGIN: void MusicBrainzTagger::searchDone() = > amarok: END__: void MusicBrainzTagger::searchDone() - Took 8.5e-0= 5s = > amarok: END__: void MusicBrainzFinder::sendNewRequest() - Took 0.00= 029s = > = > am I doing something wrong? > = > Sergey Ivanov wrote: > This UI made to be like on Picard (original musicbrainz tagger). On a= left side we have tracks to search, on a right side - search result. When = a track found we move it from left side to the right one. On the right tabl= e complete album's track list is shown. Albums, that contains a track has a= bold text, the same to tracks - all tracks in a album linked to real track= s has a bold text. BTW all tracks are drag-able. So if don't wanna save sea= rch result for some tracks, you can drop this tracks to left panel. = > Could you send one of this track on 123kash@gmail.com, i didn't have = such troubles with my "test samples". > = > Leo Franchi wrote: > Sorry for the delay. Work has been keeping me busy. > = > I've never used Picard, so that's why I was confused. But I think thi= s points to a valid criticism---the use of Picard is not necessary to the u= se of Amarok. Users should not be expected to be familiar with the user int= erface of another program to feel comfortable with Amarok's user interface.= For example, I had no idea i could drag tracks---there are no visual indic= ators that dragging is possible, nor do I know what dragging would do exact= ly (why is dragging right->left "choosing not to save results"?). My point = with this is that I think we need a better explanation than "it is how Pica= rd does it"---we want Amarok to be as intuitive and user-friendly as possib= le, regardless of how good or bad other programs are :) I think a few thing= s at least need to be done: > = > 1) Workflow clarified---what is the user supposed to do? What buttons= do what, and how is the user informed of that? > 2) Text to explain to the user what to do. Tooltips to explain what b= uttons do > = > Re: files: > = > What sort of files are supposed to 'work'? I tried some popular bands= (the beatles, the who, queen, led zeppelin) that they definitely should ha= ve in their records, but got 0 results. I can send you some if you want, or= come find me on irc (nick lfranchi, #amarok on Freenode) > = > Sergey Ivanov wrote: > All known by musicdns.org, but It could be some problems due to misse= d check in CMakeLists, so MusicDNS decomressor/fingerprint-generator should= not been compiled at all. Now It fixed, so could you try one more time? > = > Leo Franchi wrote: > Maybe the new ffmpeg stuff doesn't support flac? > = > [flac @ 0x4cb4380] invalid coding type > [flac @ 0x4cb4380] decode_frame() failed = > = > Tried also with an MP3 (AC/DC Back in Black, very very common file) a= nd it just seems to loop with a network request: > = > amarok: BEGIN: void MusicBrainzTagger::searchDone() = > amarok(18683)/kdeui (KNotification) KNotificationManager::close: 23598 > amarok: BEGIN: MusicDNSFinder::MusicDNSFinder(const Meta::TrackLi= st&, QObject*, const QString&, int, const QString&, const QString&, const Q= String&) = > amarok: [MusicDNSFinder] Initiating MusicDNS search: = > amarok: [MusicDNSFinder] Host: "ofa.musicdns.org" = > amarok: [MusicDNSFinder] Port: 80 = > amarok: [MusicDNSFinder] Path Prefix: "/ofa/1" = > amarok: [MusicDNSFinder] Client ID: "0c6019606b1d8a54d09= 85e448f3603ca" = > amarok: [MusicDNSFinder] Client version: "2.4-GIT" = > amarok: END__: MusicDNSFinder::MusicDNSFinder(const Meta::TrackLi= st&, QObject*, const QString&, int, const QString&, const QString&, const Q= String&) - Took 0.00054s = > amarok: END__: void MusicBrainzTagger::searchDone() - Took 0.95s = > amarok: END__: void MusicBrainzFinder::sendNewRequest() - Took 0.95s = > [mp3 @ 0x42d7c90] max_analyze_duration reached > [mp3 @ 0x42d7c90] Estimating duration from bitrate, this may be inacc= urate = = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = = = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00013s = > amarok: BEGIN: void MusicDNSFinder::trackDecoded(Meta::TrackPtr, QStr= ing) = > amarok: END__: void MusicDNSFinder::trackDecoded(Meta::TrackPtr, QStr= ing) - Took 0.00027s = > amarok: BEGIN: void MusicDNSFinder::decodingDone(ThreadWeaver::Job*) = > amarok: END__: void MusicDNSFinder::decodingDone(ThreadWeaver::Job*) = - Took 0.00014s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok(18683)/kio (Scheduler) KIO::SchedulerPrivate::doJob: KIO::Simp= leJob(0x48b5170) > amarok: [MusicDNSFinder] Request sent: "http://ofa.musicdns.org:80= /ofa/1/track/?gnr=3D&art=3D&rmd=3D0&cid=3D0c6019606b1d8a54d0985e448f3603ca&= alb=3D&fmt=3D&brt=3D128&cvr=3D2.4-GIT&fpt=3DAQ1DLwI4DDxJF9sTSBS/D+UT6xEzDyQ= QTgqkFHUSZg+hCpsPhgsgDbcaJBWSEl4TzhFNC5MJHAb8BdYFXAR/BE4DrwPrA0sDMANiAucClQ= KS7/m6bdptYZz/SAuOAcD+HwF+Afb/e/zz/rD65fhOAMj/Vf/H/br+7vm0/BH+y/9D/1kAAP/7A= JwBkQKOAnACBwGNAMYBJgGvAb0BdQGmAaMNCzRJII0sIv2C/dX1dv6N9Lr2hPbS8iD5SOkK9cv5= 0fsW8wD27u+jxSXbg9p23+zjtu6M9Vj46/pw/Aj81/4E/jH+J/01/ZX9vv5K/wH+lf1zCLsTkRN= e7crrTcyBBLbbcfGJ6ynwa/bbwLIKl+mP9d76/gURCURBgwfrF7YBE/zY/1L9wwBgAGEAYABpAM= MBBADVARIARQBm//UAUgACJ4FATqeHERT2swTnDKn9XfB2/A8D+/W3BxQIGeQaCXoC7PfR+8MA0= xnIBwoHPf1JARoAMQB+/9MCCgKbArACBgL1AioBtgIXAgEBngIsAZnzcfKfIKMCt/bN+wkvfPKX= 8TDmSf686sQCnTFw38cD8fnD7Mn2ZADjO9rlqwGE13DiyvNf9bX7Xvwi/jr+ZgA2/4b//wFp/97= /kP9g/sf/ugss/R8RBgZBAA8ERf/g+rTplNpk8NwE3gRhFRj2KO4x6ILWtshtyArxVis/CLQkkx= dFDvMFvgNKA8oDcQIZAXD/9gBHAN0AsQIAALsArwDKIDdBRQ=3D=3D&ttl=3D&tnm=3D&lkt=3D= &dur=3D254000&yrr=3D" = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00059s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00011s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.9e-05s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00013s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00011s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.6e-05s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.8e-05s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9e-05s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.6e-05s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.7e-05s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.9e-05s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00013s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00011s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.9e-05s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00014s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00011s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00012s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00012s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00013s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.5e-05s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s = > amarok: BEGIN: void MusicDNSFinder::sendNewRequest() = > amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s = > Trouble with flac fixed. There is no any loops with request, sendNewRequest runs once a second by ti= mer. That (sendNewRequest() spam) happened due to some network lag, 'cos th= ere was no reply from server, or error report, and if you follow the link f= rom log, you'll find track PUID in XML wrap. Now timer stops when there is = no more requests to send. - Sergey ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/100000/#review4 ----------------------------------------------------------- On 2010-09-25 21:03:14, Sergey Ivanov wrote: > = > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://git.reviewboard.kde.org/r/100000/ > ----------------------------------------------------------- > = > (Updated 2010-09-25 21:03:14) > = > = > Review request for amarok. > = > = > Summary > ------- > = > MusicBrainz and MusicDNS services support implementation. > There are three independent parts: > 1. MusicBrainzFinder class - used to make requests to MusicBrainz server = and process replies. All relies process in separate threads by MusicBrainzX= mlParser class. For a search uses guessed from a file name track informatio= n. No external dependences required. > 2. MusicDNSFinder class - used for the same purpose as MusicBrainzFinder,= but i communicate with musicdns server and receives track's PUID as a repl= y. Replies ether process in separate threads by MusicDNSXmlParser class. Fi= ngerprints generated by libofa (the only external dependence in entire patc= h). For track decompressing (MusicDNSAudioDecoder class) used xine engine (= I'm not sure is It a good choice, but amarok based on phonon media-engine, = that uses xine. So we don't deed to pull any other dependences). Received P= UIDs sends to MusicBrainzFinder class, for a search routine. > 3. View. All classes used for store (MusicBrainzTagsModel, MusicBrainzTra= ckListModel) and display (MusicBrainzTagsModelDelegate) purposes. > = > = > Diffs > ----- > = > CMakeLists.txt 191b02e = > cmake/modules/FindFFmpeg.cmake PRE-CREATION = > cmake/modules/FindLibOFA.cmake PRE-CREATION = > config-amarok.h.cmake 981b7b7 = > src/CMakeLists.txt 42614ff = > src/core-impl/capabilities/timecode/TimecodeEditCapability.h 6e15303 = > src/core-impl/capabilities/timecode/TimecodeEditCapability.cpp 8205d45 = > src/core-impl/collections/mediadevicecollection/MediaDeviceMeta.h e35b5= 7f = > src/core-impl/collections/mediadevicecollection/MediaDeviceMeta.cpp 9be= 62d9 = > src/core-impl/collections/proxycollection/ProxyCollectionMeta.cpp 8bdbf= 75 = > src/core-impl/collections/sqlcollection/CapabilityDelegateImpl.cpp b5cb= 083 = > src/core-impl/collections/sqlcollection/SqlMeta.h ee3ec21 = > src/core-impl/collections/sqlcollection/SqlMeta.cpp 2da0333 = > src/core-impl/meta/file/File.h 6d4d395 = > src/core-impl/meta/file/File.cpp 30cd2ff = > src/core-impl/meta/file/TagLibUtils.cpp 15b64a4 = > src/core-impl/meta/proxy/MetaProxy.h 2ef3805 = > src/core-impl/meta/proxy/MetaProxy.cpp 341e076 = > src/core/capabilities/EditCapability.h 79344bd = > src/dialogs/MusicBrainzTagger.h PRE-CREATION = > src/dialogs/MusicBrainzTagger.cpp PRE-CREATION = > src/dialogs/MusicBrainzTagger.ui PRE-CREATION = > src/dialogs/TagDialog.h 50cd801 = > src/dialogs/TagDialog.cpp 26d4eb8 = > src/dialogs/TagDialogBase.ui 9974d0b = > src/musicbrainz/DecodedAudioData.h PRE-CREATION = > src/musicbrainz/DecodedAudioData.cpp PRE-CREATION = > src/musicbrainz/MusicBrainzFinder.h PRE-CREATION = > src/musicbrainz/MusicBrainzFinder.cpp PRE-CREATION = > src/musicbrainz/MusicBrainzMetaClasses.h PRE-CREATION = > src/musicbrainz/MusicBrainzMetaClasses.cpp PRE-CREATION = > src/musicbrainz/MusicBrainzTagsModel.h PRE-CREATION = > src/musicbrainz/MusicBrainzTagsModel.cpp PRE-CREATION = > src/musicbrainz/MusicBrainzTagsModelDelegate.h PRE-CREATION = > src/musicbrainz/MusicBrainzTagsModelDelegate.cpp PRE-CREATION = > src/musicbrainz/MusicBrainzTrackListModel.h PRE-CREATION = > src/musicbrainz/MusicBrainzTrackListModel.cpp PRE-CREATION = > src/musicbrainz/MusicBrainzXmlParser.h PRE-CREATION = > src/musicbrainz/MusicBrainzXmlParser.cpp PRE-CREATION = > src/musicbrainz/MusicDNSAudioDecoder.h PRE-CREATION = > src/musicbrainz/MusicDNSAudioDecoder.cpp PRE-CREATION = > src/musicbrainz/MusicDNSFinder.h PRE-CREATION = > src/musicbrainz/MusicDNSFinder.cpp PRE-CREATION = > src/musicbrainz/MusicDNSXmlParser.h PRE-CREATION = > src/musicbrainz/MusicDNSXmlParser.cpp PRE-CREATION = > tests/core-impl/collections/proxycollection/TestProxyCollectionMeta.cpp= 55d1914 = > = > Diff: http://git.reviewboard.kde.org/r/100000/diff > = > = > Testing > ------- > = > = > Thanks, > = > Sergey > = > --===============6702552856587719694== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable
This is an automatically generated e-mail. To reply, visit: http://git.revie= wboard.kde.org/r/100000/

On , Sergey Ivanov wrote:

Looks wor=
ks for me.

On September 22nd, 2010, 2:27 a.m., Leo Franchi wrote:

Doesn'=
;t compile when KDE4_BUILD_TESTS is enabled:


[ 54%] Building CXX object tests/core-impl/collections/proxycollection/CMak=
eFiles/testproxycollectionmeta.dir/TestProxyCollectionMeta.o
/home/leo/kde/src/amarok/tests/core-impl/collections/proxycollection/TestPr=
oxyCollectionMeta.cpp: In member function =E2=80=98void TestProxyCollection=
Meta::testEditableCapabilityOnMultipleTracks()=E2=80=99:                   =
                                                                           =
   =

/home/leo/kde/src/amarok/tests/core-impl/collections/proxycollection/TestPr=
oxyCollectionMeta.cpp:463:51: error: cannot allocate an object of abstract =
type =E2=80=98MyEditCapability=E2=80=99
/home/leo/kde/src/amarok/tests/core-impl/collections/proxycollection/TestPr=
oxyCollectionMeta.cpp:433:1: note:   because the following virtual function=
s are pure within =E2=80=98MyEditCapability=E2=80=99:
/home/leo/kde/src/amarok/src/core/capabilities/EditCapability.h:57:26: note=
:    virtual void Capabilities::EditCapability::setUid(const QString&, =
const QString&)
/home/leo/kde/src/amarok/tests/core-impl/collections/proxycollection/TestPr=
oxyCollectionMeta.cpp:464:51: error: cannot allocate an object of abstract =
type =E2=80=98MyEditCapability=E2=80=99
/home/leo/kde/src/amarok/tests/core-impl/collections/proxycollection/TestPr=
oxyCollectionMeta.cpp:433:1: note:   since type =E2=80=98MyEditCapability=
=E2=80=99 has pure virtual functions
make[2]: *** [tests/core-impl/collections/proxycollection/CMakeFiles/testpr=
oxycollectionmeta.dir/TestProxyCollectionMeta.o] Error 1
make[1]: *** [tests/core-impl/collections/proxycollection/CMakeFiles/testpr=
oxycollectionmeta.dir/all] Error 2

On September 22nd, 2010, 2:44 a.m., Leo Franchi wrote:

I have so=
me doubts about the mass tagging UI. When I first open the MusicBrainz tagg=
er with multiple files selected, I see this:

http://imagebin.ca/view/e25y1kwP.html'

I can select files in the left pane, and that populates the fields below. I=
t's not clear if the "Start Searching..." button operates on =
the currently selected track, or all the tracks. I learned it operates on a=
ll the tracks, but I didn't know until I tried it. The text should clar=
ify this. Then I see this:

http://imagebin.ca/view/iKtHSXE.html'

Now I am just confused. What happened to the tracks on the left? What are t=
he entries on the right? None of them are track names, they are actually al=
bum names. It's not good to h ave the left listview be tracks and the r=
ight listview be albums without any sort of help for the user to figure tha=
t out. Anyway, as a new user i'm curious as to what these entries are, =
so I expand one or two:

http://imagebin.ca/view/jrUBpR3K.html'

And so I am extrapolating here, it seems like it is picking albums and bold=
ing the names of tracks in the album that matches one of the tracks I had o=
n the left---but has now disappeared. What are all the non-bold track names=
 for? They are not related to the original tracks in the left hand pane. I =
can't have an overview of what this dialog is actually going to do.

I'm not sure at this point if "Save" operates on the currentl=
y selected tracks, or if it saves all the tracks (what tracks? the ones tha=
t are bold? all of them? it is confusing). =


Also, I am unable to use the MusicDNS finder. No matter what, it never find=
 anything. Here is my debug output:


amarok:       BEGIN: MusicDNSFinder::MusicDNSFinder(const Meta::TrackList&a=
mp;, QObject*, const QString&, int, const QString&, const QString&a=
mp;, const QString&) =

amarok:         [MusicDNSFinder] Initiating MusicDNS search: =

amarok:         [MusicDNSFinder]        Host:            "ofa.musicdns=
.org" =

amarok:         [MusicDNSFinder]        Port:            80 =

amarok:         [MusicDNSFinder]        Path Prefix:     "/ofa/1" =

amarok:         [MusicDNSFinder]        Client ID:       "0c6019606b1d=
8a54d0985e448f3603ca" =

amarok:         [MusicDNSFinder]        Client version:  "2.3-GIT"=
; =

amarok:         BEGIN: MusicDNSAudioDecoder::MusicDNSAudioDecoder(const Met=
a::TrackList&, int) =

amarok:         END__: MusicDNSAudioDecoder::MusicDNSAudioDecoder(const Met=
a::TrackList&, int) - Took 0.085s =

amarok:       END__: MusicDNSFinder::MusicDNSFinder(const Meta::TrackList&a=
mp;, QObject*, const QString&, int, const QString&, const QString&a=
mp;, const QString&) - Took 0.086s =

amarok:     END__: void MusicBrainzTagger::searchDone() - DELAY Took (quite=
 long) 10s =

amarok:   END__: void MusicBrainzFinder::sendNewRequest() - DELAY Took (qui=
te long) 10s =

amarok:   BEGIN: void MusicDNSFinder::decodingDone(ThreadWeaver::Job*) =

amarok:   END__: void MusicDNSFinder::decodingDone(ThreadWeaver::Job*) - To=
ok 0.00011s =

amarok:   BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok:     [MusicDNSFinder] There is no any queued requests. Stopping time=
r. =

amarok:     BEGIN: void MusicBrainzTagger::mdnsSearchDone() =

amarok:     END__: void MusicBrainzTagger::mdnsSearchDone() - Took 6.9e-05s =

amarok:   END__: void MusicDNSFinder::sendNewRequest() - Took 0.00026s =

amarok:   BEGIN: void MusicBrainzFinder::sendNewRequest() =

amarok:     [MusicBrainzFinder] There is no any queued requests. Stopping t=
imer. =

amarok:     BEGIN: void MusicBrainzTagger::searchDone() =

amarok:     END__: void MusicBrainzTagger::searchDone() - Took 8.5e-05s =

amarok:   END__: void MusicBrainzFinder::sendNewRequest() - Took 0.00029s =


am I doing something wrong?

On September 22nd, 2010, 9:30 a.m., Sergey Ivanov wrote:

This UI m=
ade to be like on Picard (original musicbrainz tagger). On a left side we h=
ave tracks to search, on a right side - search result. When a track found w=
e move it from left side to the right one. On the right table complete albu=
m's track list is shown. Albums, that contains a track has a bold text,=
 the same to tracks - all tracks in a album linked to real tracks has a bol=
d text. BTW all tracks are drag-able. So if don't wanna save search res=
ult for some tracks, you can drop this tracks to left panel. =

Could you send one of this track on 123kash@gmail.com, i didn't have su=
ch troubles with my "test samples".

On September 24th, 2010, 1:11 a.m., Leo Franchi wrote:

Sorry for=
 the delay. Work has been keeping me busy.

I've never used Picard, so that's why I was confused. But I think t=
his points to a valid criticism---the use of Picard is not necessary to the=
 use of Amarok. Users should not be expected to be familiar with the user i=
nterface of another program to feel comfortable with Amarok's user inte=
rface. For example, I had no idea i could drag tracks---there are no visual=
 indicators that dragging is possible, nor do I know what dragging would do=
 exactly (why is dragging right->left "choosing not to save results=
"?). My point with this is that I think we need a better explanation t=
han "it is how Picard does it"---we want Amarok to be as intuitiv=
e and user-friendly as possible, regardless of how good or bad other progra=
ms are :) I think a few things at least need to be done:

1) Workflow clarified---what is the user supposed to do? What buttons do wh=
at, and how is the user informed of that?
2) Text to explain to the user what to do. Tooltips to explain what buttons=
 do

Re: files:

What sort of files are supposed to 'work'? I tried some popular ban=
ds (the beatles, the who, queen, led zeppelin) that they definitely should =
have in their records, but got 0 results. I can send you some if you want, =
or come find me on irc (nick lfranchi, #amarok on Freenode)

On September 24th, 2010, 1:05 p.m., Sergey Ivanov wrote:

All known=
 by musicdns.org, but It could be some problems due to missed check in CMak=
eLists, so MusicDNS decomressor/fingerprint-generator should not been compi=
led at all. Now It fixed, so could you try one more time?

On September 25th, 2010, 2:58 p.m., Leo Franchi wrote:

Maybe the=
 new ffmpeg stuff doesn't support flac?

[flac @ 0x4cb4380] invalid coding type
[flac @ 0x4cb4380] decode_frame() failed         =


Tried also with an MP3 (AC/DC Back in Black, very very common file) and it =
just seems to loop with a network request:

amarok:   BEGIN: void MusicBrainzTagger::searchDone() =

amarok(18683)/kdeui (KNotification) KNotificationManager::close: 23598
amarok:     BEGIN: MusicDNSFinder::MusicDNSFinder(const Meta::TrackList&=
;, QObject*, const QString&, int, const QString&, const QString&=
;, const QString&) =

amarok:       [MusicDNSFinder] Initiating MusicDNS search: =

amarok:       [MusicDNSFinder]  Host:            "ofa.musicdns.org&quo=
t; =

amarok:       [MusicDNSFinder]  Port:            80 =

amarok:       [MusicDNSFinder]  Path Prefix:     "/ofa/1" =

amarok:       [MusicDNSFinder]  Client ID:       "0c6019606b1d8a54d098=
5e448f3603ca" =

amarok:       [MusicDNSFinder]  Client version:  "2.4-GIT" =

amarok:     END__: MusicDNSFinder::MusicDNSFinder(const Meta::TrackList&=
;, QObject*, const QString&, int, const QString&, const QString&=
;, const QString&) - Took 0.00054s =

amarok:   END__: void MusicBrainzTagger::searchDone() - Took 0.95s =

amarok: END__: void MusicBrainzFinder::sendNewRequest() - Took 0.95s =

[mp3 @ 0x42d7c90] max_analyze_duration reached
[mp3 @ 0x42d7c90] Estimating duration from bitrate, this may be inaccurate =
                                                                           =
                                                            =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest()                       =
                                                                           =
                                                            =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00013s =

amarok: BEGIN: void MusicDNSFinder::trackDecoded(Meta::TrackPtr, QString) =

amarok: END__: void MusicDNSFinder::trackDecoded(Meta::TrackPtr, QString) -=
 Took 0.00027s =

amarok: BEGIN: void MusicDNSFinder::decodingDone(ThreadWeaver::Job*) =

amarok: END__: void MusicDNSFinder::decodingDone(ThreadWeaver::Job*) - Took=
 0.00014s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok(18683)/kio (Scheduler) KIO::SchedulerPrivate::doJob: KIO::SimpleJob(=
0x48b5170)
amarok:   [MusicDNSFinder] Request sent:  "http://ofa.musicdns.org:80/=
ofa/1/track/?gnr=3D&art=3D&rmd=3D0&cid=3D0c6019606b1d8a54d0985e=
448f3603ca&alb=3D&fmt=3D&brt=3D128&cvr=3D2.4-GIT&fpt=3D=
AQ1DLwI4DDxJF9sTSBS/D+UT6xEzDyQQTgqkFHUSZg+hCpsPhgsgDbcaJBWSEl4TzhFNC5MJHAb=
8BdYFXAR/BE4DrwPrA0sDMANiAucClQKS7/m6bdptYZz/SAuOAcD+HwF+Afb/e/zz/rD65fhOAM=
j/Vf/H/br+7vm0/BH+y/9D/1kAAP/7AJwBkQKOAnACBwGNAMYBJgGvAb0BdQGmAaMNCzRJII0sI=
v2C/dX1dv6N9Lr2hPbS8iD5SOkK9cv50fsW8wD27u+jxSXbg9p23+zjtu6M9Vj46/pw/Aj81/4E=
/jH+J/01/ZX9vv5K/wH+lf1zCLsTkRNe7crrTcyBBLbbcfGJ6ynwa/bbwLIKl+mP9d76/gURCUR=
BgwfrF7YBE/zY/1L9wwBgAGEAYABpAMMBBADVARIARQBm//UAUgACJ4FATqeHERT2swTnDKn9Xf=
B2/A8D+/W3BxQIGeQaCXoC7PfR+8MA0xnIBwoHPf1JARoAMQB+/9MCCgKbArACBgL1AioBtgIXA=
gEBngIsAZnzcfKfIKMCt/bN+wkvfPKX8TDmSf686sQCnTFw38cD8fnD7Mn2ZADjO9rlqwGE13Di=
yvNf9bX7Xvwi/jr+ZgA2/4b//wFp/97/kP9g/sf/ugss/R8RBgZBAA8ERf/g+rTplNpk8NwE3gR=
hFRj2KO4x6ILWtshtyArxVis/CLQkkxdFDvMFvgNKA8oDcQIZAXD/9gBHAN0AsQIAALsArwDKID=
dBRQ=3D=3D&ttl=3D&tnm=3D&lkt=3D&dur=3D254000&yrr=3D&quo=
t; =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00059s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00011s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.9e-05s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00013s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00011s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.6e-05s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.8e-05s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9e-05s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.6e-05s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.7e-05s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.9e-05s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00013s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00011s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.9e-05s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00014s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00011s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00012s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00012s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.00013s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 9.5e-05s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s =

amarok: BEGIN: void MusicDNSFinder::sendNewRequest() =

amarok: END__: void MusicDNSFinder::sendNewRequest() - Took 0.0001s =

Trouble wit=
h flac fixed.
There is no any loops with request, sendNewRequest runs once a second by ti=
mer. That (sendNewRequest() spam) happened due to some network lag, 'co=
s there was no reply from server, or error report, and if you follow the li=
nk from log, you'll find track PUID in XML wrap. Now timer stops when t=
here is no more requests to send.

- Sergey


On September 25th, 2010, 9:03 p.m., Sergey Ivanov wrote:

Review request for amarok.
By Sergey Ivanov.

Updated 2010-09-25 21:03:14

Descripti= on

MusicBrainz and MusicDNS services support implementation.
There are three independent parts:
1. MusicBrainzFinder class - used to make requests to MusicBrainz server an=
d process replies. All relies process in separate threads by MusicBrainzXml=
Parser class. For a search uses guessed from a file name track information.=
  No external dependences required.
2. MusicDNSFinder class - used for the same purpose as MusicBrainzFinder, b=
ut i communicate with musicdns server and receives track's PUID as a re=
ply. Replies ether process in separate threads by MusicDNSXmlParser class. =
Fingerprints generated by libofa (the only external dependence in entire pa=
tch). For track decompressing (MusicDNSAudioDecoder class) used xine engine=
 (I'm not sure is It a good choice, but amarok based on phonon media-en=
gine, that uses xine. So we don't deed to pull any other dependences). =
Received PUIDs sends to MusicBrainzFinder class, for a search routine.
3. View. All classes used for store (MusicBrainzTagsModel, MusicBrainzTrack=
ListModel) and display (MusicBrainzTagsModelDelegate) purposes.

Diffs=

  • CMakeLists.txt (191b02e)
  • cmake/modules/FindFFmpeg.cmake (PRE-CREATI= ON)
  • cmake/modules/FindLibOFA.cmake (PRE-CREATI= ON)
  • config-amarok.h.cmake (981b7b7)
  • src/CMakeLists.txt (42614ff)
  • src/core-impl/capabilities/timecode/TimecodeEditCapability.h (6e15303)
  • src/core-impl/capabilities/timecode/TimecodeEditCapability.cpp (8205d45)
  • src/core-impl/collections/mediadevicecollection/MediaDeviceMeta.h (e35b57f)
  • src/core-impl/collections/mediadevicecollection/MediaDeviceMeta.cpp (9be62d9)
  • src/core-impl/collections/proxycollection/ProxyCollectionMeta.cpp (8bdbf75)
  • src/core-impl/collections/sqlcollection/CapabilityDelegateImpl.cpp (b5cb083)
  • src/core-impl/collections/sqlcollection/SqlMeta.h (ee3ec21)
  • src/core-impl/collections/sqlcollection/SqlMeta.cpp (2da0333)
  • src/core-impl/meta/file/File.h (6d4d395)
  • src/core-impl/meta/file/File.cpp (30cd2ff)=
  • src/core-impl/meta/file/TagLibUtils.cpp (1= 5b64a4)
  • src/core-impl/meta/proxy/MetaProxy.h (2ef3= 805)
  • src/core-impl/meta/proxy/MetaProxy.cpp (34= 1e076)
  • src/core/capabilities/EditCapability.h (79= 344bd)
  • src/dialogs/MusicBrainzTagger.h (PRE-CREAT= ION)
  • src/dialogs/MusicBrainzTagger.cpp (PRE-CRE= ATION)
  • src/dialogs/MusicBrainzTagger.ui (PRE-CREA= TION)
  • src/dialogs/TagDialog.h (50cd801)
  • src/dialogs/TagDialog.cpp (26d4eb8)=
  • src/dialogs/TagDialogBase.ui (9974d0b)
  • src/musicbrainz/DecodedAudioData.h (PRE-CR= EATION)
  • src/musicbrainz/DecodedAudioData.cpp (PRE-= CREATION)
  • src/musicbrainz/MusicBrainzFinder.h (PRE-C= REATION)
  • src/musicbrainz/MusicBrainzFinder.cpp (PRE= -CREATION)
  • src/musicbrainz/MusicBrainzMetaClasses.h (= PRE-CREATION)
  • src/musicbrainz/MusicBrainzMetaClasses.cpp (PRE-CREATION)
  • src/musicbrainz/MusicBrainzTagsModel.h (PR= E-CREATION)
  • src/musicbrainz/MusicBrainzTagsModel.cpp (= PRE-CREATION)
  • src/musicbrainz/MusicBrainzTagsModelDelegate.h (PRE-CREATION)
  • src/musicbrainz/MusicBrainzTagsModelDelegate.cpp (PRE-CREATION)
  • src/musicbrainz/MusicBrainzTrackListModel.h (PRE-CREATION)
  • src/musicbrainz/MusicBrainzXmlParser.h (PR= E-CREATION)
  • src/musicbrainz/MusicBrainzXmlParser.cpp (= PRE-CREATION)
  • src/musicbrainz/MusicDNSAudioDecoder.h (PR= E-CREATION)
  • src/musicbrainz/MusicDNSAudioDecoder.cpp (= PRE-CREATION)
  • src/musicbrainz/MusicDNSFinder.h (PRE-CREA= TION)
  • src/musicbrainz/MusicDNSFinder.cpp (PRE-CR= EATION)
  • src/musicbrainz/MusicDNSXmlParser.h (PRE-C= REATION)
  • src/musicbrainz/MusicDNSXmlParser.cpp (PRE= -CREATION)
  • tests/core-impl/collections/proxycollection/TestProxyCollectionMeta.cp= p (55d1914)

View Diff

--===============6702552856587719694==-- --===============0677442041== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Amarok-devel mailing list Amarok-devel@kde.org https://mail.kde.org/mailman/listinfo/amarok-devel --===============0677442041==--