Finally got how sceAtracAddStreamData should work.

I did some tests for that function, and finally find out how it works.
PSP allow games to add stream data to a temp buf, the buf size is given by "atracbufsize "here. "first.offset" means how many bytes the temp buf has been written, and "first.writableBytes" means how many bytes the temp buf is allowed to write (We always have "first.offset + first.writableBytes = atracbufsize").  We only reset the temp buf when games call sceAtracGetStreamDataInfo, because that function would tell games how to add the left stream data.
It finally fixes issue #1771.