diff --git a/src/Core/Banshee.Services/Banshee.MediaProfiles/MediaProfileManager.cs b/src/Core/Banshee.Services/Banshee.MediaProfiles/MediaProfileManager.cs
index d0ecb3d..0dd50cf 100644
--- a/src/Core/Banshee.Services/Banshee.MediaProfiles/MediaProfileManager.cs
+++ b/src/Core/Banshee.Services/Banshee.MediaProfiles/MediaProfileManager.cs
@@ -300,6 +300,20 @@ namespace Banshee.MediaProfiles
             return null;
         }
 
+        public bool IsLossless (string mimetype)
+        {
+            List<string> lossless_codecs = new List<string>();
+            lossless_codecs.Add("audio/flac");
+
+            foreach (string codec in lossless_codecs) {
+                if (mimetype == codec) {
+                    return true;
+                }
+            }
+
+            return false;
+        }
+
         public IEnumerator<Profile> GetEnumerator()
         {
             Initialize ();
diff --git a/src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs b/src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs
index fa93b70..bd11c95 100644
--- a/src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs
+++ b/src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs
@@ -334,9 +334,14 @@ namespace Banshee.Dap
 
         protected bool TrackNeedsTranscoding (TrackInfo track)
         {
+            string track_mimetype = ServiceManager.MediaProfileManager.GetExtensionForMimeType (track.MimeType);
+
+            if (ServiceManager.MediaProfileManager.IsLossless (track_mimetype)) {
+                return true;
+            }
+
             foreach (string mimetype in AcceptableMimeTypes) {
-                if (ServiceManager.MediaProfileManager.GetExtensionForMimeType (track.MimeType) ==
-                    ServiceManager.MediaProfileManager.GetExtensionForMimeType (mimetype)) {
+                if (track_mimetype == ServiceManager.MediaProfileManager.GetExtensionForMimeType (mimetype)) {
                     return false;
                 }
             }
