From Second Life Wiki
Feature Design Document
The format uses normalized key framed quaternions stored in shorts. The format is closer to that of Poser than. It consists of a header that tells the viewer what morphs to set, how long the animation plays and at what priority. After that there is an array of bones with each set of positions and rotations. The position array is only used in the root bone (or you can use it to animate the HUD, course there is no default animation for the HUD so once you do, you can't get it back into the default position). Both position & rotations use 3 shorts (16 bits * 3 = 6 bytes) per entry. For quaternions, it regenerates the 4th value since the quaternion is normalized.
Discussion for future improvements
Relationship to other features
List of features that need to be tested when this feature changes, and why.
Sitting - Make sure animations still work while sitting.
Region crossing - Make sure animations still work while sitting.. in vehicles.. while crossing a region boundary.
Scripted permissions - specifically, animation permissions.
Asset Upload - If animation uploading was changed, verify other uploads still work.