Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | |
Я вставлял каждый 50-й - мерцание ужасное 20.02.03 14:51 Число просмотров: 1669
Автор: cybervlad <cybervlad> Статус: Elderman
|
> Кто видел интерлейсные режимы мониторов - поймет :-))) ;)
отрыл я этот исходник (sorry за ассемблерный pascal - извращения молодости :)
как видно по циклу в конце, оно рассчитано на 70 Гц развертку, хотя если менять 69 на 49 или 24 - ничего принципиальнно не меняется.
Program Psycho;
Const
VideoBase : word=$B800;
Line1 : word=11;
Line2 : word=12;
Attr1 : string[1]=#$07;
Attr2 : string[1]=#$08;
SimpleString: string=
'>> Это просто строка. Нажмите любую клавишу... <<';
HiddenString: string=
'>> Трезвость - норма жизни ! <<';
Var
SpacedString: string;
i : byte;
PosX1,PosX2 : integer;
PosY1,PosY2 : integer;
Len1,Len2 : integer;
PROCEDURE ClrScr; assembler; { ClearScreen }
asm
mov ax,0600h
mov bh,07h
xor cx,cx
mov dx,184Fh (* entire window *)
int 10h
end;
PROCEDURE GotoXY(x,y: byte); assembler; { set cursor position }
asm
mov ax,0200h
xor bh,bh
mov dh,x
mov dl,y
int 10h
end;
FUNCTION KeyPressed: boolean; assembler;
asm
mov ax,0100h
int 16h
jz @1
mov al,1
ret
@1:
xor al,al
end;
FUNCTION ReadKey: char; assembler;
asm
jmp @1 (* перейти на @1 *)
db 0 (* определить байт-переменную *)
@1: mov al,cs PTR(@1 - 1) (* переслать его значение в al *)
cmp al,0 (* сравнить al с 0 *)
jz @2 (* если 0, то перейти на @2 *)
xor ah,ah (* обнулить ah *)
mov cs PTR(@1 - 1),ah (* переслать ah (0) в байт-переменную *)
jmp @3 (* перейти на @3 *)
@2: xor ah,ah (* в ah - 0 (код функции чтения клавиши) *)
int 16h (* выполнить прерывание (чтение клавиши) *)
cmp al,0 (* сравнить результат в al с 0 *)
jnz @3 (* если не 0, то перейти на @3 *)
mov cs PTR(@1 - 1),ah (* переслать в байт-переменную значение из ah *)
@3: ret (* возврат из функции (значение в al) *)
end;
procedure WaitVertSync; assembler; { Wait for begin Vert Sync }
asm
xor ax,ax
mov es,ax
mov dx,es:[463h] { index register port adress }
{ 3B4h/3D4h Mono/Color VGA adapters }
add dl,6 { offset for ISR1 }
in al,dx
test al,08h { 1 - on, 0 - off }
jz @wait1
@wait0: { sync already in progress }
in al,dx
test al,08h
jnz @wait0 { wait for complete of current sync }
@wait1: { wait for begin sync }
in al,dx
test al,08h
jz @wait1
end;
begin
ClrScr;
GotoXY(79,Line2);
Len1:=Length(SimpleString);
Len2:=Length(HiddenString);
FillChar(SpacedString[1],Len2,' ');
SpacedString[0]:=HiddenString[0];
FOR i:=1 TO Len1 DO Insert(Attr1,SimpleString,2*i);
FOR i:=1 TO Len2 DO Insert(Attr2,HiddenString,2*i);
FOR i:=1 TO Len2 DO Insert(Attr2,SpacedString,2*i);
Len1:=Length(SimpleString);
Len2:=Length(HiddenString);
PosX1:=Round((160-Len1)/2);
PosX2:=Round((160-Len2)/2);
PosY1:=VideoBase+(Line1*160 shr 4);
PosY2:=VideoBase+(Line2*160 shr 4);
if Odd(PosX1) then Dec(PosX1);
if Odd(PosX2) then Dec(PosX2);
move(SimpleString[1],Mem[PosY1:PosX1],Len1);
REPEAT
WaitVertSync;
move(SpacedString[1],Mem[PosY2:PosX2],Len2);
WaitVertSync;
move(SimpleString[1],Mem[PosY1:PosX1],Len1);
FOR i:=1 TO 69 DO WaitVertSync;
move(HiddenString[1],Mem[PosY2:PosX2],Len2);
UNTIL KeyPressed;
if ReadKey=#0 then ReadKey;
writeln;
end.
|
<site updates>
|
Опять 25 кадр ;) 18.02.03 13:38
Publisher: cybervlad <cybervlad> Статус: Elderman
|
Опять 25 кадр ;) CNews http://cnews.ru/newtop/index.shtml?2003/02/18/141030
"Прибор, способный выявлять скрытые вставки в видеопродукции (так называемый "25-й кадр"), полностью готов к эксплуатации. Об этом в понедельник сообщила главный научный сотрудник Всероссийского НИИ телерадиовещания (ВНИИТР) Светлана Немцова. Напомним, что "25-й кадр" невозможно уловить глазом, но он обладает гипнотическим воздействием и представляет опасность для психического здоровья людей, и поэтому его использование запрещено.", - сообщает CNews со сылкой на "Вести" РТР.
Забавно, но насколько все-таки ошибочная терминология быстро прирастает. Идея "25 кадра" использовалась при демонстрации кинофильмов: при "продергивании" пленки на следующий кадр (напомню, стандартная скорость - 24 кадра в секунду) объектив проектора прикрывается, а с другого проектора в этот момент демонстрируется кадр с иинформацией, которую нужно внушить зрителям. По причине высокой инерционнности свечения люминофора использовать эту технологию в компьютере/телевизоре...
Полный текст
|
|
поясните пожалуйста 06.03.03 21:14
Автор: tdes <jin> Статус: Member
|
это взято из dvd faq:
"...У DVD-Video те же самые проблемы несовместимости NTSC и PAL, как у видеокассет или LD. MPEG-видео хранится на DVD в цифровом формате, но оно подготовлено для одной из двух взаимно несовместимых телевизионных систем: 525/60 (NTSC) или 625/50 (PAL/SECAM). Имеются три различия между дисками, предназначенными для воспроизведения на различных системах: размер изображения и коэффициент сжатия пиксела (720x480 против 720x576), частота смены кадров (29.97 против 25), и surround звук (Dolby Digital против MPEG). (См. 3.4 и 3.6). Изображение в кино обычно хранится в формате 24 кадра в секунду, но предварительно обрабатывается для того, чтобы его демонстрировать с той или иной частотой смены кадров. Кино, подготовленное для PAL-систем обычно быстрее на 4 %, так что звук должен корректироваться до кодирования... "
о каких тогда 25, 29.97 кадрах идет речь ? вообще, насколько я думал 24 кадра/с - это порог, при котором картинка видится неприрывной, поправьте, если неправ
|
| |
поясните пожалуйста 07.03.03 08:26
Автор: cybervlad <cybervlad> Статус: Elderman
|
> о каких тогда 25, 29.97 кадрах идет речь ? вообще, > насколько я думал 24 кадра/с - это порог, при котором > картинка видится неприрывной, поправьте, если неправ правильно, если меньше 24 кадров в секунду - изображение дергается, а если больше - нет. причем, чем выше частота, тем меньше глаза устают.
попробуй выставить частоту, скажем, 60 Гц (в винде в свойствах рабочего стола), повернись боком к мониитору, чтобы видеть ьего только боковым зрением. потом поставь частоту 80 Гц (ну, или сколько там монитор позволит 75, 100 ;) ) и сравни зрительные ощущения. при работе за монитором в течение 10-14 часов это существенно сказывается...
|
|
самое же смешное... 19.02.03 19:38
Автор: dl <Dmitry Leonov>
|
...в том, что автор классического эксперимента по применению 25 кадра, с которого пошла его слава, когда народ после сеанса якобы ломанулся покупать колу и попкорн, с тех пор уже много раз признавался в фальсификации результатов. Так что все это, мягко говоря, высосано из пальца.
|
| |
кстати, да ;) 20.02.03 09:30
Автор: cybervlad <cybervlad> Статус: Elderman
|
> ...в том, что автор классического эксперимента по > применению 25 кадра, с которого пошла его слава, когда > народ после сеанса якобы ломанулся покупать колу и попкорн, > с тех пор уже много раз признавался в фальсификации > результатов. про неоднозначность результатов тоже слышал.
возможность же реализовать "классический" 25 кадр на компе я решил как-то проверить на практике. поймать момент смены кадра довольно легко (кто боролся на CGA со "снегом", помнит про функцию Wait for begin Vert Sync - по определению обратного хода луча). Написал простенькую программку (это все под ms-dos делалось), которая выводила на экран надпись, отсчитывала по событию "обратный ход луча" N кадров (надо подбирать под частоту развертки, например 59) и вставляла наодинкадр другую надпись. из-за инерционнности люминофора вторая надпись была видна невооруженным глазом ;) разве что вставлять ее не 25, а 125 или 225 кадром ;)
а вообще, спич о том, что "25 кадром" называют все подряд, вплоть до нейролингвистического программирования и распальцовок о собственных крутых познаниях в области скрытого вербального воздействия на собеседника ;)
|
| | |
Я вставлял каждый 50-й - мерцание ужасное 20.02.03 14:08
Автор: amirul <Serge> Статус: The Elderman
|
Кто видел интерлейсные режимы мониторов - поймет :-)))
Причем как на мониторе, так и на телевизоре.
> например 59) и вставляла наодинкадр другую надпись. > из-за инерционнности люминофора вторая надпись была видна > невооруженным глазом ;) разве что вставлять ее не 25, а 125 > или 225 кадром ;) Ну тогда и глаз может не заметить вообще - и вся идея прахом :-)))
|
| | | |
Я вставлял каждый 50-й - мерцание ужасное 20.02.03 14:51
Автор: cybervlad <cybervlad> Статус: Elderman
|
> Кто видел интерлейсные режимы мониторов - поймет :-))) ;)
отрыл я этот исходник (sorry за ассемблерный pascal - извращения молодости :)
как видно по циклу в конце, оно рассчитано на 70 Гц развертку, хотя если менять 69 на 49 или 24 - ничего принципиальнно не меняется.
Program Psycho;
Const
VideoBase : word=$B800;
Line1 : word=11;
Line2 : word=12;
Attr1 : string[1]=#$07;
Attr2 : string[1]=#$08;
SimpleString: string=
'>> Это просто строка. Нажмите любую клавишу... <<';
HiddenString: string=
'>> Трезвость - норма жизни ! <<';
Var
SpacedString: string;
i : byte;
PosX1,PosX2 : integer;
PosY1,PosY2 : integer;
Len1,Len2 : integer;
PROCEDURE ClrScr; assembler; { ClearScreen }
asm
mov ax,0600h
mov bh,07h
xor cx,cx
mov dx,184Fh (* entire window *)
int 10h
end;
PROCEDURE GotoXY(x,y: byte); assembler; { set cursor position }
asm
mov ax,0200h
xor bh,bh
mov dh,x
mov dl,y
int 10h
end;
FUNCTION KeyPressed: boolean; assembler;
asm
mov ax,0100h
int 16h
jz @1
mov al,1
ret
@1:
xor al,al
end;
FUNCTION ReadKey: char; assembler;
asm
jmp @1 (* перейти на @1 *)
db 0 (* определить байт-переменную *)
@1: mov al,cs PTR(@1 - 1) (* переслать его значение в al *)
cmp al,0 (* сравнить al с 0 *)
jz @2 (* если 0, то перейти на @2 *)
xor ah,ah (* обнулить ah *)
mov cs PTR(@1 - 1),ah (* переслать ah (0) в байт-переменную *)
jmp @3 (* перейти на @3 *)
@2: xor ah,ah (* в ah - 0 (код функции чтения клавиши) *)
int 16h (* выполнить прерывание (чтение клавиши) *)
cmp al,0 (* сравнить результат в al с 0 *)
jnz @3 (* если не 0, то перейти на @3 *)
mov cs PTR(@1 - 1),ah (* переслать в байт-переменную значение из ah *)
@3: ret (* возврат из функции (значение в al) *)
end;
procedure WaitVertSync; assembler; { Wait for begin Vert Sync }
asm
xor ax,ax
mov es,ax
mov dx,es:[463h] { index register port adress }
{ 3B4h/3D4h Mono/Color VGA adapters }
add dl,6 { offset for ISR1 }
in al,dx
test al,08h { 1 - on, 0 - off }
jz @wait1
@wait0: { sync already in progress }
in al,dx
test al,08h
jnz @wait0 { wait for complete of current sync }
@wait1: { wait for begin sync }
in al,dx
test al,08h
jz @wait1
end;
begin
ClrScr;
GotoXY(79,Line2);
Len1:=Length(SimpleString);
Len2:=Length(HiddenString);
FillChar(SpacedString[1],Len2,' ');
SpacedString[0]:=HiddenString[0];
FOR i:=1 TO Len1 DO Insert(Attr1,SimpleString,2*i);
FOR i:=1 TO Len2 DO Insert(Attr2,HiddenString,2*i);
FOR i:=1 TO Len2 DO Insert(Attr2,SpacedString,2*i);
Len1:=Length(SimpleString);
Len2:=Length(HiddenString);
PosX1:=Round((160-Len1)/2);
PosX2:=Round((160-Len2)/2);
PosY1:=VideoBase+(Line1*160 shr 4);
PosY2:=VideoBase+(Line2*160 shr 4);
if Odd(PosX1) then Dec(PosX1);
if Odd(PosX2) then Dec(PosX2);
move(SimpleString[1],Mem[PosY1:PosX1],Len1);
REPEAT
WaitVertSync;
move(SpacedString[1],Mem[PosY2:PosX2],Len2);
WaitVertSync;
move(SimpleString[1],Mem[PosY1:PosX1],Len1);
FOR i:=1 TO 69 DO WaitVertSync;
move(HiddenString[1],Mem[PosY2:PosX2],Len2);
UNTIL KeyPressed;
if ReadKey=#0 then ReadKey;
writeln;
end.
|
|
Опять 25 кадр ;) 19.02.03 11:45
Автор: Zgen Статус: Незарегистрированный пользователь
|
Нда. А то что основную опасность представляют 24 нормальных кадра - как всегда никто не задумывается. :)
|
| |
ну... Это то - о чем я лично задумался в первую очередь... 26.02.03 19:32
Автор: Explorer Статус: Незарегистрированный пользователь
|
как, вероятно и многие...
|
|
|