public byte [] get_frame_data(int n){
        
        byte [] frame_info   = mpf[n].get_info();
        byte [] frame_data   = mpf[n].get_main_data();
        byte [] anc_data    = mpf[n].get_anc_data();
        byte [] reserve     = mpf[n].get_reserve();
        int     len         = mpf[n].get_framesize();
        byte [] frame       = new byte [len];
        
        int end = frame_info.length;
        int start = 0;
        System.arraycopy(frame_info, 0, frame, start, end);
        
        if( frame_data != null ){
            start = end;
            end += frame_data.length;
            System.arraycopy(frame_data, 0, frame, start, frame_data.length);
            
        }
        
        if( anc_data!=null ){
            start = end;
            end += anc_data.length;
            
            System.arraycopy(anc_data, 0, frame, start, anc_data.length);
        }
        
        if(reserve!=null){
            start = end;
            end += reserve.length;
            
            System.arraycopy(reserve, 0, frame, start, reserve.length);
        }
        
        return frame;
    }