Mas é claro! Por email hoje eu mando somente os ArmCodes, e no sábado ou domingo eu posto o firmware completo aqui no fórum.
Recebi o e-mail!
Rictad, como ficaria o menu dos tags do italico? É uma tarefa que eu posso ir adiantando aqui.
São tres opções, certo? Ficaria assim?: 1) Mostrar o itálico, 2) Filtrar os tags e 3) Não fazer nada.
Qual o valor para cada opção, 0, 1 e 2?
Sim, 3 opções são suficientes. O valor vai depender. Para repassar o valor ao ARM, é mais fácil utilizar os bits de uma outra opção que não faça uso de todos os seus bits. Fazemos um OR e fundimos as duas opções no mesmo byte.
Por exemplo, no meu caso, usei a opção de alinhamento vertical da legenda. Percebi que o alinhamento vertical só depende de 1 bit. Se a opção for 0, o alinhamento é inferior, se for 1, superior. Se for 2, novamente inferior, 3, superior. Só há duas opções de fato, que são rotativas. Então, o alinhamento é definido apenas pelo bit 0 do byte da opção. Se for XXXXXXX0, o alinhamento é inferior. Se for XXXXXXX1, o alinhamento é superior.
Assim, foi possível utilizar os demais bits para passar outras opções do 8032 ao ARM. Deixei o bit 7 para ser usado como flag indicativa de itálico ativado/desativado (tag <i> encontrada ou tag </i> encontrada) na rotina de itálico no próprio ARM. Já os bits 6, 5 e 4 foram usados para as opções. Precisei de 3 bits devido à quantidade de opções que criei.
Como você utilizará apenas 3 opções, bastariam apenas 2 bits: o 6 e o 5. Então daria para utilizar o valor 0
0000000 = #00 para "Não fazer nada", o valor 0
0100000 = #20 para "Filtrar as tags" e valor 0
1000000 = #40 para "Habilitar itálico". Na hora de repassar ao ARM, basta ler a EEPROM com essa opção, fazer um OR com o valor de EEPROM da opção de alinhamento vertical e repassar o resultado junto com o alinhamento. Então teremos combinações, como:
0
1000000 + 000000
01 = 0
10000
01 --> Alinhamento superior e itálico ligado;
0
0100000 + 000000
00 = 0
01000
00 --> Alinhamento inferior e filtrar tags.
e todas as demais combinações.
O mais importante agora é saber como são os ciclos das opções de alinhamento de legenda (pode ser das cores de legenda também) do seu firmware. Você deve seguir os seguintes passos:
O seu firmware tem opção de alinhamento vertical? Se sim, você deve testar os valores 0, 1, 2, 3 e os valores #20, #21, #22, #23, #40, #41, #42 e #43 para ver se o padrão de alinhamento se repete: o alinhamento deve ser o mesmo para 0, #20 e #40, o mesmo para 1, #21 e #41, o mesmo para 2, #22 e #42 e o mesmo para 3, #23 e #43. Se isso se confirmar, você deve criar as opções do itálico com valores 0, #20 e #40 e fazer um OR com a opção de alinhamento vertical antes de enviá-la ao ARM.
Se o seu firmware não tem opção de alinhamento vertical, tente o mesmo com o horizontal. Se não tiver também, então é porque você deixou os alinhamentos padrões do firmware. Ainda assim, pode testar mudar um dos dois diretamente no firmware para ver se segue os ciclos acima. Se seguir, então basta criar as opções de itálico e fazer o OR com o valor padrão do alinhamento antes de enviá-lo. Também é possível tentar testar a opção de cor da legenda para ver se há ciclos. Mas como há mais cores que alinhamentos, a opção de cor deve utilizar mais bits.
Em todo caso, deverá descobrir em qual posição na rotina SUB_FillMpeg4SubtitleParamsRecord (sub_E350) a opção de alinhamento (ou outra escolhida) fica carregada no ARM, para utilizarmos na rotina do itálico. Isso é fácil.
Talvez tenha ficado meio confuso.
Qualquer dúvida, é só perguntar. O padrão de ciclos das opções também pode ser outro, especialmente se os bits que importam forem mais significativos. Neste caso, as opções terão que ter outro valor. Mas eu acho que será igual aos LGs.
Enfim, tente descobrir alguma opção da legenda, preferencialmente um dos alinhamentos, que seja cíclica e dependa de poucos bits para a gente começar as modificações.