//---------------------------------------------------------------------------
void Riff_AVI__hdrl_strl_indx::Modify_Internal ()
{
    //EntryCount
    int32u Entry_Count=LittleEndian2int32u(Chunk.Content.Buffer+4);

    bool IsChanged=false;
    Chunk.Content.Buffer_Offset=24;
    for (int32u Pos=0; Pos<Entry_Count; Pos++)
    {
        int64u Value=LittleEndian2int64u(Chunk.Content.Buffer+Chunk.Content.Buffer_Offset);
        /*
        for (std::set<void*>::iterator movi=Global->AVI__movi_Pointers.begin(); movi!=Global->AVI__movi_Pointers.end(); movi++)
            if (Value>=((Riff_AVI__movi*)(*movi))->Chunk.File_In_Position && Value<((Riff_AVI__movi*)(*movi))->Chunk.File_In_Position+((Riff_AVI__movi*)(*movi))->Chunk.Content.Size)
            {
                if (((Riff_AVI__movi*)(*movi))->Chunk.File_In_Position!=((Riff_AVI__movi*)(*movi))->Chunk.File_Out_Position)
                {
                    Value-=((Riff_AVI__movi*)(*movi))->Chunk.File_In_Position;
                    Value+=((Riff_AVI__movi*)(*movi))->Chunk.File_Out_Position;
                    int64u2LittleEndian(Chunk.Content.Buffer+Chunk.Content.Buffer_Offset, Value);
                    IsChanged=true;
                }
                break;
            }
        */
        for (std::set<void*>::iterator ix=Global->AVI__movi___ix_Pointers.begin(); ix!=Global->AVI__movi___ix_Pointers.end(); ix++)
            if (Value==((Riff_AVI__movi___ix*)(*ix))->Chunk.File_In_Position)
            {
                if (((Riff_AVI__movi___ix*)(*ix))->Chunk.File_Out_Position!=((Riff_AVI__movi___ix*)(*ix))->Chunk.File_In_Position)
                {
                    int64u2LittleEndian(Chunk.Content.Buffer+Chunk.Content.Buffer_Offset, ((Riff_AVI__movi___ix*)(*ix))->Chunk.File_Out_Position);
                    IsChanged=true;
                }
                break;
            }
        Chunk.Content.Buffer_Offset+=16;
    }

    if (IsChanged)
        Chunk.Content.IsModified=true;
    //Chunk.Content.Size_IsModified=true;
}
Exemplo n.º 2
0
//---------------------------------------------------------------------------
// Little Endian - 128 bits
void int128u2LittleEndian(char* List, int128u Value)
{
    int64u2LittleEndian(List+8, Value.lo);
    int64u2LittleEndian(List  , Value.hi);
}