--- mythplugins-0.20/mytharchive/mytharchivehelper/main.cpp.orig 2006-12-10 22:34:07.553336750 +0000 +++ mythplugins-0.20/mytharchive/mytharchivehelper/main.cpp 2006-12-10 22:36:12.725159500 +0000 @@ -1619,7 +1619,7 @@ } // Getting stream information - if ((ret = av_find_stream_info(inputFC)) < 0) + if ((ret = av_find_stream_info_deep(inputFC)) < 0) { VERBOSE(VB_JOBQUEUE, QString("Couldn't get stream info, error #%1").arg(ret)); @@ -1857,7 +1857,7 @@ } // Getting stream information - ret = av_find_stream_info(inputFC); + ret = av_find_stream_info_deep(inputFC); if (ret < 0) { --- mythplugins-0.20/mytharchive/mythburn/scripts/mythburn.py.orig 2006-12-11 10:04:31.298159000 +0000 +++ mythplugins-0.20/mytharchive/mythburn/scripts/mythburn.py 2006-12-11 13:36:20.396428000 +0000 @@ -2780,21 +2780,22 @@ # tuple index constants -VIDEO_INDEX = 0 -VIDEO_CODEC = 1 -VIDEO_ID = 2 - -AUDIO_INDEX = 0 -AUDIO_CODEC = 1 -AUDIO_ID = 2 -AUDIO_LANG = 3 +VIDEO_INDEX = 0 +VIDEO_CODEC = 1 +VIDEO_ID = 2 + +AUDIO_INDEX = 0 +AUDIO_CODEC = 1 +AUDIO_ID = 2 +AUDIO_LANG = 3 +AUDIO_BITRATE = 4 def selectStreams(folder): """Choose the streams we want from the source file""" - video = (-1, 'N/A', -1) # index, codec, ID - audio1 = (-1, 'N/A', -1, 'N/A') # index, codec, ID, lang - audio2 = (-1, 'N/A', -1, 'N/A') + video = (-1, 'N/A', -1) # index, codec, ID + audio1 = (-1, 'N/A', -1, 'N/A', -1) # index, codec, ID, lang, bitrate + audio2 = (-1, 'N/A', -1, 'N/A', -1) #open the XML containing information about this file infoDOM = xml.dom.minidom.parse(os.path.join(folder, 'streaminfo.xml')) @@ -2837,12 +2838,13 @@ lang = node.attributes["language"].value format = string.upper(node.attributes["codec"].value) pid = int(node.attributes["id"].value) + bitrate = int(node.attributes["bitrate"].value) if lang == preferredlang1 and format == "AC3": if found: - if pid < audio1[AUDIO_ID]: - audio1 = (index, format, pid, lang) + if bitrate > audio1[AUDIO_BITRATE]: + audio1 = (index, format, pid, lang, bitrate) else: - audio1 = (index, format, pid, lang) + audio1 = (index, format, pid, lang, bitrate) found = True # second try to find a stream with mp2 and preferred language 1 @@ -2852,12 +2854,13 @@ lang = node.attributes["language"].value format = string.upper(node.attributes["codec"].value) pid = int(node.attributes["id"].value) + bitrate = int(node.attributes["bitrate"].value) if lang == preferredlang1 and format == "MP2": if found: - if pid < audio1[AUDIO_ID]: - audio1 = (index, format, pid, lang) + if bitrate > audio1[AUDIO_BITRATE]: + audio1 = (index, format, pid, lang, bitrate) else: - audio1 = (index, format, pid, lang) + audio1 = (index, format, pid, lang, bitrate) found = True # finally use the stream with the lowest pid, prefer ac3 over mp2 @@ -2866,15 +2869,16 @@ index = int(node.attributes["ffmpegindex"].value) format = string.upper(node.attributes["codec"].value) pid = int(node.attributes["id"].value) + bitrate = int(node.attributes["bitrate"].value) if not found: - audio1 = (index, format, pid, lang) + audio1 = (index, format, pid, lang, bitrate) found = True else: if format == "AC3" and audio1[AUDIO_CODEC] == "MP2": - audio1 = (index, format, pid, lang) + audio1 = (index, format, pid, lang, bitrate) else: - if pid < audio1[AUDIO_ID]: - audio1 = (index, format, pid, lang) + if bitrate > audio1[AUDIO_BITRATE]: + audio1 = (index, format, pid, lang, bitrate) # do we need to find a second audio stream? if preferredlang1 != preferredlang2 and nodes.length > 1: @@ -2885,12 +2889,13 @@ lang = node.attributes["language"].value format = string.upper(node.attributes["codec"].value) pid = int(node.attributes["id"].value) + bitrate = int(node.attributes["bitrate"].value) if lang == preferredlang2 and format == "AC3": if found: - if pid < audio2[AUDIO_ID]: - audio2 = (index, format, pid, lang) + if bitrate > audio2[AUDIO_BITRATE]: + audio2 = (index, format, pid, lang, bitrate) else: - audio2 = (index, format, pid, lang) + audio2 = (index, format, pid, lang, bitrate) found = True # second try to find a stream with mp2 and preferred language 2 @@ -2900,12 +2905,13 @@ lang = node.attributes["language"].value format = string.upper(node.attributes["codec"].value) pid = int(node.attributes["id"].value) + bitrate = int(node.attributes["bitrate"].value) if lang == preferredlang2 and format == "MP2": if found: - if pid < audio2[AUDIO_ID]: - audio2 = (index, format, pid, lang) + if bitrate > audio2[AUDIO_BITRATE]: + audio2 = (index, format, pid, lang, bitrate) else: - audio2 = (index, format, pid, lang) + audio2 = (index, format, pid, lang, bitrate) found = True # finally use the stream with the lowest pid, prefer ac3 over mp2 @@ -2914,21 +2920,22 @@ index = int(node.attributes["ffmpegindex"].value) format = string.upper(node.attributes["codec"].value) pid = int(node.attributes["id"].value) + bitrate = int(node.attributes["bitrate"].value) if not found: # make sure we don't choose the same stream as audio1 if pid != audio1[AUDIO_ID]: - audio2 = (index, format, pid, lang) + audio2 = (index, format, pid, lang, bitrate) found = True else: if format == "AC3" and audio2[AUDIO_CODEC] == "MP2" and pid != audio1[AUDIO_ID]: - audio2 = (index, format, pid, lang) + audio2 = (index, format, pid, lang, bitrate) else: - if pid < audio2[AUDIO_ID] and pid != audio1[AUDIO_ID]: - audio2 = (index, format, pid, lang) + if bitrate > audio2[AUDIO_BITRATE] and pid != audio1[AUDIO_ID]: + audio2 = (index, format, pid, lang, bitrate) - write("Video id: 0x%x, Audio1: [%d] 0x%x (%s, %s), Audio2: [%d] - 0x%x (%s, %s)" % \ - (video[VIDEO_ID], audio1[AUDIO_INDEX], audio1[AUDIO_ID], audio1[AUDIO_CODEC], audio1[AUDIO_LANG], \ - audio2[AUDIO_INDEX], audio2[AUDIO_ID], audio2[AUDIO_CODEC], audio2[AUDIO_LANG])) + write("Video id: 0x%x, Audio1: [%d] 0x%x (%s, %s, %d), Audio2: [%d] - 0x%x (%s, %s, %d)" % \ + (video[VIDEO_ID], audio1[AUDIO_INDEX], audio1[AUDIO_ID], audio1[AUDIO_CODEC], audio1[AUDIO_LANG], audio1[AUDIO_BITRATE], \ + audio2[AUDIO_INDEX], audio2[AUDIO_ID], audio2[AUDIO_CODEC], audio2[AUDIO_LANG], audio2[AUDIO_BITRATE])) return (video, audio1, audio2)