Типы исходных данных

В этой главе описываются много типов общих данных, использующихся в файлах QuickTime.

Значения кодов языка

Некоторые элементы файла QuickTime могут быть связаны с определенным разговорным языком. Для указания языка, связанного с определенным объектом, формат файла QuickTime использует или коды языка от менеджера по Сценарию Macintosh или коды языка ISO (как указано в 6392/t ISO).

QuickTime хранит коды языка как 16-разрядные поля без знака. Все коды языка Macintosh имеют значение, которое является меньше, чем 0x400 за исключением единственного значения 0x7FFF указание неуказанного языка. Коды языка ISO являются тремя кодами символов и сохранены в 16-разрядном поле кода языка как упакованные массивы, как описано в Кодах Языка ISO. Если обработано как 16-разрядное целое число без знака, код языка ISO всегда имеет значение 0x400 или больше, если код не равен значению 0x7FFF указание Неуказанного кода языка Macintosh.

Если язык указан с помощью кода языка Macintosh, любой связанный текст использует текстовое кодирование Macintosh.

Если язык указан с помощью кода языка ISO, любой связанный текст использует текстовое кодирование Unicode. Когда Unicode используется, текст находится в UTF-8, если это не запускается с метки порядка байтов (BOM, 0xFEFF.), после чего текст находится в UTF-16. И BOM и текст UTF-16 должны быть обратным порядком байтов.

Коды языка Macintosh

Таблица 5-1 перечисляет некоторые коды языка Macintosh, поддерживаемые QuickTime.

Таблица 5-1  значения кодов языка QuickTime

Язык

Значение

Язык

Значение

Английский язык

0

Грузинский язык

52

Французский язык

1

Молдавский язык

53

Немецкий язык

2

Киргизский язык

54

Итальянский язык

3

Tajiki

55

Нидерландский язык

4

Туркменский язык

56

Шведский язык

5

Монгольский язык

57

Испанский язык

6

MongolianCyr

58

Датский язык

7

Пушту

59

Португальский язык

8

Курдский язык

60

Норвежский язык

9

Кашмирец

61

Иврит

10

Sindhi

62

Японский язык

11

Тибетский язык

63

Арабский язык

12

Непальский язык

64

Финский язык

13

Санскрит

65

Греческий язык

14

Язык маратхи

66

Исландский язык

15

Бенгальский язык

67

Мальтийский язык

16

Ассамский язык

68

Турецкий язык

17

Gujarati

69

Хорватский язык

18

Язык панджаби

70

Традиционные китайцы

19

Язык ория

71

Урду

20

Малайялам

72

Хинди

21

Каннада

73

Тайский язык

22

Тамильский язык

74

Корейский язык

23

Язык телугу

75

Литовский язык

24

Сингальский

76

Польский язык

25

Бирманский язык

77

Венгерский язык

26

Кхмерский язык

78

Эстонский язык

27

Лаосский язык

79

Латышский

28

Вьетнамский язык

80

Латышский язык

28

Индонезийский язык

81

Saami

29

Тагальский язык

82

Сами

29

MalayRoman

83

Фарерский язык

30

MalayArabic

84

Фарси

31

Амхарский язык

85

Русский язык

32

Галла

87

Упрощенный китайский

33

Oromo

87

Фламандский язык

34

Язык сомали

88

Ирландский язык

35

Суахили

89

Албанский язык

36

Kinyarwanda

90

Румынский язык

37

Rundi

91

Чешский язык

38

Nyanja

92

Словацкий язык

39

Малагасийский язык

93

Словенский язык

40

Эсперанто

94

Идиш

41

Валлийский язык

128

Сербский язык

42

Баскский язык

129

Македонский язык

43

Каталанский язык

130

Болгарский язык

44

Латынь

131

Украинский язык

45

Язык кечуа

132

Белорусский язык

46

Гуарани

133

Узбекский язык

47

Язык аймара

134

Казах

48

Татарин

135

Азербайджанский язык

49

Уйгурский язык

136

AzerbaijanAr

50

Dzongkha

137

Армянский язык

51

JavaneseRom

138

Неуказанный

32767

Коды языка ISO

Поскольку коды языка, указанные 6392/t ISO, являются тремя символами долго, они должны быть упакованы для вписывания в 16-разрядное поле. Алгоритм упаковки должен отобразить каждый из этих трех символов, которые всегда являются нижним регистром, в 5-разрядное целое число и затем связывают эти целые числа в младшие значащие 15 битов 16-разрядного целого числа, оставляя старший значащий набор битов 16-разрядного целого числа для обнуления.

Один алгоритм для выполнения этой упаковки должен обработать каждый символ ISO как 16-разрядное целое число. Вычтите 0x60 из первого символа и умножьтесь 2^10 (0x400), вычтите 0x60 из второго символа и умножьтесь 2^5 (0x20), вычтите 0x60 из третьего символа и добавьте три 16-разрядных значения. Это приведет к единственному 16-разрядному значению с тремя кодами, правильно упакованными в 15 младших значащих битов и старший значащий набор битов для обнуления.

Пример: код языка ISO 'jpn' состоит из трех шестнадцатеричных значений 0x6A, 0x70, 0x6E. Вычитание 0x60 от каждого значения приводит к значениям 0xA, 0x10, 0xE, как показано в Таблице 5-2.

Таблица 5-2  5-разрядные значения символов UTF-8

Символ

Код UTF-8

5-разрядное значение

Смещенное значение

j

0x6A

0xA (01010)

0x2800 (01010..........)

p

0x70

0x10 (10000)

0x200 (..... 10000.....)

n

0x6E

0xE (01110)

0xE (.......... 01110)

Первое значение смещается, 10 битов налево (умноженный на 0x400) и второе значение смещаются 5 битов налево (умноженный на 0x20). Это приводит к значениям 0x2800, 0x200, 0xE. Когда добавлено, это приводит к 16-разрядному упакованному значению кода языка 0x2A0E.

Календарная дата и временные стоимости

Фильмы в формате QuickTime хранят информацию даты и времени в формате даты Macintosh: 32-разрядное значение, указывающее число секунд, передавших с полуночи 1 января 1904.

Это значение не указывает часовой пояс. Установившаяся практика должна использовать местное время для часового пояса, где сгенерировано значение.

Строго рекомендуется, чтобы вся календарная дата и временные стоимости были сохранены с помощью времени UTC, так, чтобы все файлы имели время и дату относительно того же часового пояса.

Матрицы

Файлы QuickTime используют матрицы для описания пространственной информации о многих объектах, таких как дорожки в фильме.

Матрица преобразования определяет, как отобразить точки от одного координатного пространства в другое координатное пространство. Путем изменения содержания матрицы преобразования можно выполнить несколько стандартных операций графического дисплея, включая перевод, вращение и масштабирование. Матрица, используемая для выполнения двумерных трансформаций, описана математически 3 3 матрица.

Все значения в матрице являются 32-разрядными числами фиксированной точки, разделенными как 16,16, за исключением {u, v, w} столбец, содержащий 32-разрядные числа фиксированной точки, разделенные как 2,30. Рисунок 5-1 и рисунок 5-2 изображают, как QuickTime использует матрицы для преобразования отображаемых объектов.

Рисунок 5-1  , Как матрицы дисплея используются на
How display matrices are used in QuickTime
рисунке 5-2 QuickTime  , Применяющем преобразование
Applying the transform

Графические режимы

Файлы QuickTime используют графические режимы, чтобы описать, как один видео или графический уровень должен быть объединен с уровнями ниже его. Графические режимы также известны как режимы передачи. Некоторые графические режимы требуют, чтобы цвет был указан для определенных операций, таких как смешивание для определения уровня смешения. QuickTime использует графические режимы, определенные QuickDraw Apple.

Наиболее распространенные графические режимы и ditherCopy, которые просто указывают, что изображение не должно смешиваться с изображением позади него, но перезаписывать его. QuickTime также определяет несколько дополнительных графических режимов.

Таблица 5-3 перечисляет дополнительные графические режимы, поддерживаемые QuickTime.

Таблица 5-3  графические режимы QuickTime

Режим

Использование opcolor

Код

Описание

Копия

0x0

Скопируйте исходное изображение по месту назначения.

Копия размытия

0x40

Размойте изображение (в случае необходимости), иначе сделайте копию.

Смешение

да

0x20

Целевым пикселем замен со смешением источника и целевых пиксельных цветов, с пропорцией для каждого канала управляет тот канал в opcolor.

Прозрачный

да

0x24

Если исходный пиксель не равен opcolor, заменяет целевой пиксель исходным пикселем.

Прямая альфа

0x100

Заменяет целевой пиксель смешением источника и целевые пиксели, с пропорцией, которой управляет альфа-канал.

Premul белая альфа

0x101

Предварительно умноженный с белым означает, что компоненты цвета каждого пикселя были уже смешаны с белым пикселем, на основе их значения альфа-канала. Эффективно, это означает, что изображение было уже объединено с белым фоном. Во-первых, удалите белого из каждого пикселя и затем смешайте изображение с фактическими фоновыми пикселями.

Premul черная альфа

0x102

Предварительно умноженный с черным цветом совпадает с предварительно умноженный с белым, кроме цвета фона, с которым было смешано изображение, является черным вместо белого.

Прямое альфа-смешение

да

0x104

Подобный прямой альфе, но альфа-значению, используемому для каждого канала, комбинация альфа-канала и того канала в opcolor.

Состав (размывают копию),

0x103

(Только дорожки), дорожка нарисована вне экрана, и затем составлена на экран с помощью копии размытия

Цвета RGB

Много атомов в формате файла QuickTime содержат значения цвета RGB. Они обычно сохранены как три последовательных 16-разрядных целых числа без знака в следующем порядке: красный, зеленый, синий.

Баланс

Значения баланса представлены как 16-разрядные числа фиксированной точки, колеблющиеся от-1.0 до +1.0. Старший разряд 8 битов содержит целочисленную часть значения; младший разряд 8 битов содержит дробную часть. Отрицательные величины взвешивают баланс к левому динамику; положительные значения подчеркивают правильный канал. Установка баланса к 0 соответствует нейтральной установке.