Сегодня я открыл (только сегодня, т.к. телевизор смотрю от силы 2-3 раза в месяц), что у упомянутого ресивера есть, оказывается, кардридер.
С горем пополам засунул туда SD-флешку (она ни в какую не хотела лезть в кардридер, а потом ее пришлось выковыривать острым предметом). Поставил на запись кусок телепередачи, чтобы проверить, как оно будет отображаться на компьютере.
Примонтировал флешку. Во-первых, оказалось, что дурной рисивер разбил мою 4Гб флешку на два раздела. Один - размером 2.8Гб, на который и писалось кино. Второй раздел остался не отформатированным... Во-вторых, оказалось, что видео записано в каком-то странном формате ".rec", который mplayer'ом не распознался.
Гугление на предмет преобразования этого дурацкого формата подсказало уйму вантузячих программ, но ни одной под линукс. И вдруг, о чудо! Я натыкаюсь на форум, где какой-то хороший человек объяснил, как эти файлы смотреть.
Оказывается, пишется видео в обычном mpeg2, 720x576, 15000кб/с;звук - стерео, mp3, 192кб/с. А посмотреть нельзя его было «просто так» потому, что видео «закодировано». А весь ржач в том, что кодирование это - XOR 0xAA! :)
В общем, делюсь «декодером»:
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char **argv){
int in = open(argv[1], O_RDONLY);
int out = open(argv[2], O_RDWR|O_CREAT|O_TRUNC, 0666);
int rb, i;
unsigned char *buf = (char*) malloc(1024 * sizeof(char));
unsigned char *ptr;
while(rb = read(in, buf, 1024)){
ptr = buf;
for(i = 0; i < rb; i++)
*ptr++ ^= 0xaa;
write(out, buf, rb);
}
close(in);
close(out);
free(buf);
}