Saturday, January 28, 2012

Как убрать дубли каналов НТВ+ в MythTV

Думаю многие сталкивались с большим количеством дублей каналов НТВ+. Часть дублей - это каналы пакета НТВ+ Лайт, которые идут с транспондера с частотой 12418. Поэтому либо удалите этот транспондер, либо сделайте каналы с этого транспондера невидимыми. Остальные дубли убрать немного сложнее, так как они находятся на одном трансподере. Внешне каналы вроде ничем не отличаются, поэтому пришлось воспользоваться dvbsnoop, чтобы найти разницу. Вот пример двух каналов с транспондера с частотой 12476. Как видите, название каналов одинаковые, а вот отличаются они Service Type. У канала с SID 20614 это 1, что значит обычный SD канал в MPEG2. Канал с SID 20653 имеет Service Type 0x16, что по попросту значит, что это MPEG4 (h264) в SD-качестве.
Service_id: 20614 (0x5086) [= --> refers to PMT program_number]
reserved_1: 63 (0x3f)
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 30 (0x001e)

DVB-DescriptorTag: 83 (0x53) [= CA_identifier_descriptor]
descriptor_length: 2 (0x02)
CA_system_ID: 1280 (0x0500) [= France Telecom (Viaccess)]

DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
descriptor_length: 24 (0x18)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 5 (0x05)
service_provider_name: "HTB+" -- Charset: Latin/Cyrilic alphabet
service_name_length: 16 (0x10)
Service_name: "Cartoon Network" -- Charset: Latin/Cyrilic alphabet


Service_id: 20653 (0x50ad) [= --> refers to PMT program_number]
reserved_1: 63 (0x3f)
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 30 (0x001e)

DVB-DescriptorTag: 83 (0x53) [= CA_identifier_descriptor]
descriptor_length: 2 (0x02)
CA_system_ID: 1280 (0x0500) [= France Telecom (Viaccess)]

DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
descriptor_length: 24 (0x18)
service_type: 22 (0x16) [= advanced codec SD digital television service]
service_provider_name_length: 5 (0x05)
service_provider_name: "HTB+" -- Charset: Latin/Cyrilic alphabet
service_name_length: 16 (0x10)
Service_name: "Cartoon Network" -- Charset: Latin/Cyrilic alphabet

Я попробовал пару каналов с Service Type 0x16, но они все равно вещаются в MPEG2. По-видимому НТВ хочет постепенно перевести все вещание в MPEG4 и проводит тестирование. Это вполне логично, так как позволит вещать большее количество каналов при тех же затратах на аренду транспондеров.
Но MythTV не хранит Service Type в базе данных, поэтому убрать дубли по этому критерию простым способом не удастся. Единственное, что я заметил, что дубли обычно располагаются в конце SDT и можно скрывать каналы с максимальным SID. Для этого достаточно выполнить следующий SQL-update для БД MythTV:

update channel set visible=false
where chanid in (select t.id from(select max(chanid) as id from channel group by name,mplexid having count(*)=2) as t);

Думаю, что для тех, кто смог установить и настроить MythTV моего описания будет достаточно, а если нет - задавайте вопросы.

Monday, November 24, 2008

HDMI audio in Linux running on Apple TV

Very long time I wanted to open my blog to share my experience with community but have no time for this. Now I'm opening my blog with some info about HDMI audio support in Linux on Apple TV. There was the patch that makes RCA outputs to work, but HDMI audio was still not working. After digging alsa code and inspecting AppleTV internals I've discovered that AppleTV uses Silicon Image SI 1390 for HDMI audio and there is support for it in ATI-HDMI module. The solution was as simple as adding one line of code in alsa-kernel/pci/hda/patch_atihdmi.c file (now, alsa-driver 1.0.18a has this patch):
struct hda_codec_preset snd_hda_preset_atihdmi[] = {
...............................
{ .id = 0x10951390, .name = "AppleTV HDMI", .patch = patch_atihdmi },
{ .id = 0x10951392, .name = "SiI1392 HDMI", .patch = patch_atihdmi },
...............................
};
After recompiling and installing patched alsa new IEC958 1 output was added. That is our HDMI audio output.
There is also interesting fact, that you need to boot your Apple TV with HDMI cable plugged in and TV turned on. Otherwise you will not hear any sound.
However sound have disappeared after upgrading NVidia driver from 100.14.19 to 173.14.12. So, this needs further investigation.