diff --git a/common b/common
index 888e0a2..821f7c8 160000
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 888e0a268b60904dd208b672a3c57f1ff7d9786c
+Subproject commit 821f7c8c40958054011a3e50be145ed981baf67a
diff --git a/pitivi/formatters/format.py b/pitivi/formatters/format.py
index 3be2233..1c67b42 100644
--- a/pitivi/formatters/format.py
+++ b/pitivi/formatters/format.py
@@ -103,4 +103,4 @@ from pitivi.formatters.etree import ElementTreeFormatter
 from pitivi.formatters.playlist import PlaylistFormatter
 
 register_formatter(ElementTreeFormatter, _("PiTiVi Native (XML)"), ('xptv',))
-register_formatter(PlaylistFormatter, _("Playlist format"), ('pls', ))
+register_formatter(PlaylistFormatter, _("Playlist format"), ('pls', 'm3u'))
diff --git a/pitivi/formatters/playlist.py b/pitivi/formatters/playlist.py
index ed7d8c0..7a8fe33 100644
--- a/pitivi/formatters/playlist.py
+++ b/pitivi/formatters/playlist.py
@@ -20,6 +20,7 @@
 # Boston, MA 02111-1307, USA.
 
 import os.path
+import ConfigParser
 import gst
 from pitivi.stream import AudioStream, VideoStream
 from pitivi.formatters.base import LoadOnlyFormatter
@@ -35,15 +36,21 @@ class PlaylistFormatter(LoadOnlyFormatter):
         self._uris = []
         self._basedir = None
 
-    def _parseLine(self, ln):
-        if ln.startswith('/'):
-            # absolute path
-            return 'file://' + ln.strip()
-        return 'file://' + os.path.join(self._basedir, ln.strip())
 
-    def _parse(self, location, project=None):
-        path = location.split('file://', 1)[1]
-        self._basedir = os.path.dirname(path)
+    def _parsePLS(self, filename):
+        # load and parse pls format http://en.wikipedia.org/wiki/PLS_%28file_format%29
+        config = ConfigParser.ConfigParser()
+        config.read((filename, ))
+        res = []
+        for i in range(config.getint('playlist', 'NumberOfEntries')):
+            ln = config.get('playlist', 'File%d' % (i+1))
+            val = self.validateSourceURI(self._parseLine(ln))
+            # FIXME : if the loading failed, we should insert a blank source
+            if val:
+                res.append(val)
+        self._uris = res
+
+    def _parseM3U(self, filename):
         res = []
         # simple list of location/uri
         f = file(path)
@@ -54,6 +61,22 @@ class PlaylistFormatter(LoadOnlyFormatter):
                 res.append(val)
         self._uris = res
 
+    def _parseLine(self, ln):
+        if ln.startswith('#'):
+            return
+        elif ln.startswith('/'):
+            # absolute path
+            return 'file://' + ln.strip()
+        return 'file://' + os.path.join(self._basedir, ln.strip())
+
+    def _parse(self, location, project=None):
+        path = location.split('file://', 1)[1]
+        self._basedir = os.path.dirname(path)
+        if path.endswith('.pls'):
+            self._parsePLS(path)
+        else:
+            self._parseM3U(path)
+
     def _getSources(self):
         return self._uris
 
@@ -71,4 +94,4 @@ class PlaylistFormatter(LoadOnlyFormatter):
 
     @classmethod
     def canHandle(cls, uri):
-        return uri.endswith('.pls')
+        return os.path.splitext(uri)[-1] in ('.pls', '.m3u')
